{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-09-18T11:38:03.494589Z",
     "start_time": "2024-09-18T11:38:02.366427Z"
    }
   },
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from datetime import date\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import roc_auc_score"
   ],
   "outputs": [],
   "execution_count": 68
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:24.267191Z",
     "start_time": "2024-09-18T11:35:23.580360Z"
    }
   },
   "cell_type": "code",
   "source": [
    "off_train_data = pd.read_csv('F:\\Demopython\\o2o\\O2O优惠券使用新人赛\\ccf_offline_stage1_train.csv',encoding='utf-8')\n",
    "off_test_data = pd.read_csv('F:\\Demopython\\o2o\\O2O优惠券使用新人赛\\ccf_offline_stage1_test_revised.csv',encoding='utf-8')"
   ],
   "id": "709dff8f9d5d4892",
   "outputs": [],
   "execution_count": 50
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:24.862350Z",
     "start_time": "2024-09-18T11:35:24.853044Z"
    }
   },
   "cell_type": "code",
   "source": "off_train_data.head(5)",
   "id": "5348e629727940d4",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   User_id  Merchant_id  Coupon_id Discount_rate  Distance  Date_received  \\\n",
       "0  1439408         2632        NaN           NaN       0.0            NaN   \n",
       "1  1439408         4663    11002.0        150:20       1.0     20160528.0   \n",
       "2  1439408         2632     8591.0          20:1       0.0     20160217.0   \n",
       "3  1439408         2632     1078.0          20:1       0.0     20160319.0   \n",
       "4  1439408         2632     8591.0          20:1       0.0     20160613.0   \n",
       "\n",
       "         Date  \n",
       "0  20160217.0  \n",
       "1         NaN  \n",
       "2         NaN  \n",
       "3         NaN  \n",
       "4         NaN  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "      <th>Date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20160217.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1439408</td>\n",
       "      <td>4663</td>\n",
       "      <td>11002.0</td>\n",
       "      <td>150:20</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20160528.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160217.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>1078.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160319.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1439408</td>\n",
       "      <td>2632</td>\n",
       "      <td>8591.0</td>\n",
       "      <td>20:1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>20160613.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 51
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:25.775105Z",
     "start_time": "2024-09-18T11:35:25.768845Z"
    }
   },
   "cell_type": "code",
   "source": "off_test_data.head(5)",
   "id": "e2536768759c6420",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   User_id  Merchant_id  Coupon_id Discount_rate  Distance  Date_received\n",
       "0  4129537          450       9983          30:5       1.0       20160712\n",
       "1  6949378         1300       3429          30:5       NaN       20160706\n",
       "2  2166529         7113       6928        200:20       5.0       20160727\n",
       "3  2166529         7113       1808        100:10       5.0       20160727\n",
       "4  6172162         7605       6500          30:1       2.0       20160708"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>User_id</th>\n",
       "      <th>Merchant_id</th>\n",
       "      <th>Coupon_id</th>\n",
       "      <th>Discount_rate</th>\n",
       "      <th>Distance</th>\n",
       "      <th>Date_received</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4129537</td>\n",
       "      <td>450</td>\n",
       "      <td>9983</td>\n",
       "      <td>30:5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20160712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6949378</td>\n",
       "      <td>1300</td>\n",
       "      <td>3429</td>\n",
       "      <td>30:5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20160706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2166529</td>\n",
       "      <td>7113</td>\n",
       "      <td>6928</td>\n",
       "      <td>200:20</td>\n",
       "      <td>5.0</td>\n",
       "      <td>20160727</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2166529</td>\n",
       "      <td>7113</td>\n",
       "      <td>1808</td>\n",
       "      <td>100:10</td>\n",
       "      <td>5.0</td>\n",
       "      <td>20160727</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6172162</td>\n",
       "      <td>7605</td>\n",
       "      <td>6500</td>\n",
       "      <td>30:1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>20160708</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 52
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:28.184758Z",
     "start_time": "2024-09-18T11:35:27.789763Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 填充缺失值\n",
    "off_train_data = off_train_data.fillna('null')\n",
    "off_test_data = off_test_data.fillna('null')"
   ],
   "id": "c88e009b7adb4492",
   "outputs": [],
   "execution_count": 53
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:28.966054Z",
     "start_time": "2024-09-18T11:35:28.961594Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 用label列标记分类，label的取值为1表示正样本，0表示负样本，-1表示普通用户\n",
    "def label(row):\n",
    "    if row['Date'] != 'null' and row['Date_received'] != 'null':\n",
    "        if row['Coupon_id'] != 'null':\n",
    "            # 优惠券id不为空，表示使用了优惠券购买\n",
    "            # 计算使用优惠券的日期差值\n",
    "            td = pd.to_datetime(row['Date'], format='%Y%m%d') - \\\n",
    "                 pd.to_datetime(row['Date_received'], format='%Y%m%d')\n",
    "            if td <= pd.Timedelta(15, 'D'):  # 判断使用优惠券是否在15天内\n",
    "                return 1\n",
    "            else:\n",
    "                return 0\n",
    "        else:\n",
    "            # 其他情况：优惠券id为null，表示没有使用优惠券购买\n",
    "            return 0\n",
    "    if row['Date'] == 'null' and row['Date_received'] != 'null':\n",
    "        return 0\n",
    "    else:\n",
    "        return -1"
   ],
   "id": "861cddcfe1b0c07a",
   "outputs": [],
   "execution_count": 54
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:46.005403Z",
     "start_time": "2024-09-18T11:35:29.887240Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#对lable分类\n",
    "off_train_data['label'] = off_train_data.apply(label, axis = 1)\n",
    "off_train_data['label'].value_counts()"
   ],
   "id": "83a3bea433e67336",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label\n",
       " 0    988887\n",
       "-1    701602\n",
       " 1     64395\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 55
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:52.765758Z",
     "start_time": "2024-09-18T11:35:52.761026Z"
    }
   },
   "cell_type": "code",
   "source": "off_train_data.columns",
   "id": "17fdcfaad41c76d0",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['User_id', 'Merchant_id', 'Coupon_id', 'Discount_rate', 'Distance',\n",
       "       'Date_received', 'Date', 'label'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 56
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:54.093996Z",
     "start_time": "2024-09-18T11:35:53.754374Z"
    }
   },
   "cell_type": "code",
   "source": [
    "X = off_train_data.loc[:,off_train_data.columns != 'label']  # 数据\n",
    "y = off_train_data.loc[:,off_train_data.columns == 'label']  # 标签\n",
    "\n",
    "# 获取类1标签的长度\n",
    "count_one_Class = len(off_train_data[off_train_data['label'] == 1])\n",
    "\n",
    "# 获取两类标签的索引\n",
    "one_Class_index = off_train_data[off_train_data['label'] == 1].index\n",
    "zero_Class_index = off_train_data[off_train_data['label'] == 0].index\n",
    "\n",
    "# 随机选择相同数目的索引\n",
    "np.random.seed(25)  # 定义随机种子\n",
    "random_zero_index = np.array(np.random.choice(zero_Class_index,count_one_Class,replace=True))\n",
    "\n",
    "# 合并模型样本索引\n",
    "sample = np.concatenate([one_Class_index,random_zero_index])\n",
    "\n",
    "# 按照索引获取行\n",
    "off_train_data = off_train_data.loc[sample,:]\n",
    "# 打印结果对比\n",
    "print('label为1的数目：', len(one_Class_index))\n",
    "print('label为0的数目：', len(zero_Class_index))\n",
    "print('总数：', len(one_Class_index) + len(zero_Class_index))\n",
    "print('抽样label为1的数目：', len(one_Class_index))\n",
    "print('随机抽取label为0的数目：', len(random_zero_index))\n",
    "print('抽样总数：', len(one_Class_index) + len(random_zero_index))\n",
    "print('总样本形状：', off_train_data.shape)"
   ],
   "id": "cca96443cb15463a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "label为1的数目： 64395\n",
      "label为0的数目： 988887\n",
      "总数： 1053282\n",
      "抽样label为1的数目： 64395\n",
      "随机抽取label为0的数目： 64395\n",
      "抽样总数： 128790\n",
      "总样本形状： (128790, 8)\n"
     ]
    }
   ],
   "execution_count": 57
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:35:55.689626Z",
     "start_time": "2024-09-18T11:35:55.685490Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 探索性分析\n",
    "print(off_test_data.columns)"
   ],
   "id": "51e7695ca05b4a30",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['User_id', 'Merchant_id', 'Coupon_id', 'Discount_rate', 'Distance',\n",
      "       'Date_received'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "execution_count": 58
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:39:42.945442Z",
     "start_time": "2024-09-18T11:39:42.918458Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 变换距离的类型，缺失值替换为-1\n",
    "off_train_data['Distance'] = off_train_data['Distance'].replace('null', -1).astype(int)\n",
    "off_test_data['Distance'] = off_test_data['Distance'].replace('null', -1).astype(int)\n",
    "print('查看缺失值结果：\\n',off_train_data.isnull().sum())"
   ],
   "id": "43b56b295f293f65",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "查看缺失值结果：\n",
      " User_id          0\n",
      "Merchant_id      0\n",
      "Coupon_id        0\n",
      "Discount_rate    0\n",
      "Distance         0\n",
      "Date_received    0\n",
      "Date             0\n",
      "label            0\n",
      "dtype: int64\n"
     ]
    }
   ],
   "execution_count": 70
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:39:43.903265Z",
     "start_time": "2024-09-18T11:39:43.883662Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 描述性统计分析\n",
    "description = off_train_data.describe()"
   ],
   "id": "d00e83c21a4ed0fe",
   "outputs": [],
   "execution_count": 71
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:39:45.128374Z",
     "start_time": "2024-09-18T11:39:45.120816Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 依次计算极差值、系数、四分位数间距\n",
    "description.loc['range'] = description.loc['max'] - description.loc['min']\n",
    "description.loc['var'] = description.loc['std'] - description.loc['mean']\n",
    "description.loc['dis'] = description.loc['75%'] - description.loc['25%']\n",
    "print('描述性统计结果：\\n',np.round(description, 2))  # 保留两位小数\n"
   ],
   "id": "9de4c67b5bb60362",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "描述性统计结果：\n",
      "           User_id  Merchant_id   Distance     label\n",
      "count   128790.00    128790.00  128790.00  128790.0\n",
      "mean   3697459.80      4077.69       1.85       0.5\n",
      "std    2123423.03      2471.02       3.36       0.5\n",
      "min        110.00         3.00      -1.00       0.0\n",
      "25%    1859343.75      1941.00       0.00       0.0\n",
      "50%    3698645.00      3621.00       0.00       0.5\n",
      "75%    5543521.50      6434.00       2.00       1.0\n",
      "max    7360941.00      8856.00      10.00       1.0\n",
      "range  7360831.00      8853.00      11.00       1.0\n",
      "var   -1574036.77     -1606.67       1.51       0.0\n",
      "dis    3684177.75      4493.00       2.00       1.0\n"
     ]
    }
   ],
   "execution_count": 72
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:40:48.030559Z",
     "start_time": "2024-09-18T11:40:48.002188Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 相关性分析\n",
    "corr = off_train_data.corr(method = 'pearson')  # 计算相关系数矩阵"
   ],
   "id": "a253c5d3047d7b1b",
   "outputs": [],
   "execution_count": 76
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:40:31.075514Z",
     "start_time": "2024-09-18T11:40:31.072010Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 处理 'Distance' 列，确保它是数值类型\n",
    "off_train_data['Distance'] = pd.to_numeric(off_train_data['Distance'], errors='coerce').fillna(-1)"
   ],
   "id": "de0d93c3ad4effa6",
   "outputs": [],
   "execution_count": 74
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:40:37.240257Z",
     "start_time": "2024-09-18T11:40:37.082244Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 检查所有其他列，确保它们都是数值类型\n",
    "for col in off_train_data.columns:\n",
    "    off_train_data[col] = pd.to_numeric(off_train_data[col], errors='coerce').fillna(-1)"
   ],
   "id": "a47204ce61cd2a78",
   "outputs": [],
   "execution_count": 75
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:40:55.026638Z",
     "start_time": "2024-09-18T11:40:55.020911Z"
    }
   },
   "cell_type": "code",
   "source": "print('相关系数矩阵为：\\n', np.round(corr, 2))",
   "id": "21ad68ba0384d5be",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "相关系数矩阵为：\n",
      "                User_id  Merchant_id  Coupon_id  Discount_rate  Distance  \\\n",
      "User_id           1.00         0.00       0.00           0.01     -0.00   \n",
      "Merchant_id       0.00         1.00       0.03           0.03     -0.01   \n",
      "Coupon_id         0.00         0.03       1.00           0.03      0.03   \n",
      "Discount_rate     0.01         0.03       0.03           1.00     -0.03   \n",
      "Distance         -0.00        -0.01       0.03          -0.03      1.00   \n",
      "Date_received     0.00        -0.05      -0.10          -0.04     -0.21   \n",
      "Date              0.00         0.07       0.03           0.07     -0.33   \n",
      "label             0.00         0.07       0.03           0.07     -0.33   \n",
      "\n",
      "               Date_received  Date  label  \n",
      "User_id                 0.00  0.00   0.00  \n",
      "Merchant_id            -0.05  0.07   0.07  \n",
      "Coupon_id              -0.10  0.03   0.03  \n",
      "Discount_rate          -0.04  0.07   0.07  \n",
      "Distance               -0.21 -0.33  -0.33  \n",
      "Date_received           1.00  0.22   0.22  \n",
      "Date                    0.22  1.00   0.99  \n",
      "label                   0.22  0.99   1.00  \n"
     ]
    }
   ],
   "execution_count": 77
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:41:45.599083Z",
     "start_time": "2024-09-18T11:41:44.095903Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 绘制相关性热力图\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "plt.rcParams['font.sans-serif'] = 'SimHei'\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "plt.subplots(figsize=(10, 10))  # 设置画面大小\n",
    "sns.heatmap(corr, annot=True, vmax=1, square=True, cmap=\"Blues\")\n",
    "plt.title('相关性热力图')\n",
    "plt.show()"
   ],
   "id": "410cdf56d2d381ab",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ],
      "image/png": "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u7vk3+rq6jh48CAAID4+HmXLlkVISAh0dXWFj5CIiIiIiIpMgQuErl275rosJiYG5cqVw+HDh9GgQQNBAiMiIiIioqJX4AIhLCws12XJycmYN28exo8fjwcPHggSGBERERFRvtjDSHAyPQfhW6qqqhgzZgxevXolxOaIiIiIiEhBBCkQAOD06dMwMTERanNERERERKQABe5iVKNGjVzvEg8PD8fHjx+xf/9+wQIjIiIiIsoPRzESXoELhIkTJ+a6TF9fH/Xr10e5cuWEiImIiIiIiBSkwAXCoEGD5BkHEREREREVAzI9KI2IiIiIqDhgFyPhCXaTMhERERERKT8WCEREREREJMEuRkRERESktNjFSHi8gkBERERERBIsEIiIiIiISIJdjIiIiIhIebGHkeB4BYGIiIiIiCRYIBARERERkQS7GBERERGR0uIoRsLjFQQiIiIiIpJggUBERERERBIK72LkdniRokNQOs17zVZ0CErpvPMCRYegdFR41VYmamL+9lJYGiXEig5BKYVExys6BCKFYxcj4fGvGBERERERSbBAICIiIiIiCYV3MSIiIiIikhW7GAmvwAWChYVFgf4H+Pj4fFdARERERESkOAUuEHbv3i35t4uLCw4dOoRp06bB0tIS7969w6pVq9ChQwd5xEhEREREREWkwAVC06ZNJf/u378/Lly4gKpVq0rm/fTTT+jUqRPWrFkjbIRERERERLlgFyPhyXSTskgkgq+vr9Q8f39/JCUlCRIUEREREREphkw3Kc+dOxe9evVCmzZtYGJigg8fPuDChQtYvXq10PEREREREVERkukKwvDhw3Hnzh3UqlULKSkpcHBwwPXr1zFy5Eih4yMiIiIiyp2omE5KTOZhTqtVq4Zq1aoJGQsRERERESkYH5RGREREREQSfFAaERERESktjmIkvAIXCJaWlnj27Bl0dHTyfGgaH5RGRERERKS8Clwg/Pvvv9DS0gIg/dA0IiIiIiL6ccj0oLSs/yYiIiIiUhR2MRIeb1ImIiIiIiIJuRQIvXv3xqdPn+SxaSIiIiIikiO5jGJ06dIlxMXFyWPTREREREQS7GIkPHYxIiIiIiIiCRYIREREREQkwQelEREREZHyYg8jwcnlCgL7ghERERERKSe5FAhpaWny2CwREREREcmZXLoYPXv2DBUrVpTHpomIiIiIJNhz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LFq0CCNHjsT9+/eFjZCIiIiIiIpMga8geHl5oU2bNrku79+/P168eCFIUEREREREBSESiYrlpMwKXCC0a9cOEyZMwMePH7Mti46OxqxZs9CsWTMhYyMiIiIioiJW4C5GO3fuxODBg2FkZARLS0sYGhpCLBYjLCwMr1+/RtWqVXH69Gl5xkpERERERHJW4AKhVKlSOH78OPz8/HDz5k0EBgYiKSkJenp6qFGjBn766Sd5xklERERElI2KcvfmKZYK/RwEc3NzmJubyyEUIiIiIiJSNJmepExERERERD8mmZ6kTERERERUHCj7iEHFkUxXEJKSkrBkyRLUq1cPFStWhKenJ+rWrYu3b98KHR8RERERERUhmQqEMWPG4OjRoxg2bBiioqKgpaWF+vXrY+TIkULHR0RERERERUimLkZHjhzBo0ePYGFhgenTp0MsFmPy5MlwcHAQOj4iIiIiolyxh5HwZCoQTExM4O7uDgsLC8m8N2/eSL0uqDRZAvg/x+G8ZHPeeYGiQ1A67fvOUXQISun6sSWKDkHpxCemKDoEpRSdlKzoEIjoByRTgbBixQp069YNW7duRWxsLKZOnYrr169jz549QsdHRERERERFSKYCoV27dvD09ISzszOqV68OY2NjLF++XKYrCEREREREshKBXSuEJvMwp1ZWVpg1a5aQsRARERERkYLJNIrRihUrkJSUJDXP1dUVzZo1EyImIiIiIiJSEJkKhJkzZyIuLk5qnp2dHe7duydIUEREREREBaEiKp6TMitUFyN3d3cAQFpaGm7evAltbW3JaxcXF9jY2AgfIRERERERFZlCFQiDBg0CkP5I61GjRkFFJf0ChIqKCipVqoR9+/YJHyERERERERWZQhUIvr6+ANILgufPn0NXV1cuQRERERERFYSIT0oTnEz3ILRt2xYlSpQQOhYiIiIiIlIwmYY5PX/+fI7zExMToaam9l0BERERERGR4shUIAQFBWHRokV4/fo1UlJSAKTfqOzl5YWgoCBBAyQiIiIiyg17GAlPpi5GAwYMQEhICDQ1NaGpqYlevXrh1atXGD16tNDxERERERFREZKpQLh37x42bdqEqVOnIiIiAqNHj8bOnTvh4uIidHxERERERFSEZOpiZGRkhMuXL6NHjx7w9PREXFwc7O3t8fz5c6HjIyIiIiLKlQr7GAlOpgJh6dKl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e4wfPx61atVCfHw84uPjtVYmjQIEQ0NDiD67ZDw9PR0WFhZaKRQRERERkTrEIlGBfKjLwMAAa9euxeDBg+Hg4IB//vkHc+bMAZCxotHhw4cz5dm5cydev36NyZMnw8LCQnhoi0bXIAwdOhRt27bFwIEDkZKSgn/++Qc7d+7E8OHDtVYwIiIiIqIvQceOHeHv7w8/Pz80aNAARYsWBZAx3SgrI0aMwIgRI3RWHo0ChLFjx6J48eLYsmULSpcujWPHjmHEiBHo2bOntstHRERERFToOTo6wtHRMb+LASAXqxj16tULvXr10mZZiIiIiIhypKDeKE2faXQNQseOHbFt2zbExsZquzxERERERJSPNAoQWrRogV27dqFMmTJo06YN1q9fj8jISG2XjYiIiIiI8phGU4yGDRuGYcOGQSaT4fz58zh27BhatGgBW1tbnDlzRttlJCIiIiLKUk5WDCL1aDSC8IGBgQGMjY1RpEgRiMViJCcna6tcRERERESUDzQaQdi0aROOHDkCX19feHh4oFOnTjh8+DBKlCih7fIREREREVEe0ihA2LlzJzp37oyVK1cK67QSEREREeU1zjDSPo0ChBMnTmi7HEREREREVADk6hoEIiIiIiIqXDS+URoRERERUX7j2W7tUztA6NevH1auXAljY2P069cv2/02btyolYIREREREVHeUztAKFOmDMRisfD/RERERERU+KgdIEybNi3L/yciIiIiyi8iLmOkdZy2RUREREREAgYIREREREQk0DhA2LFjB7p164aGDRvC398fXbp0QWRkpDbLRkRERESklKiAPvSZRgHCb7/9hgkTJsDZ2Rl37twRLl4eNGiQVgtHRERERER5S6P7IKxbtw5nz55F5cqVsWrVKhgaGmLWrFmoVauWtstHRERERER5SKMAwdraGsHBwahcubKw7e3bt3BwcNBawYiIiIiIVBFzFSOt0yhAmDx5Mjp27IgffvgBycnJWLx4MQ4cOIDp06druXhERERERJSXNLoGoXfv3jh58iTMzMzw9ddfIz4+Hps3b0avXr20XT4iIiIiIspDGo0gAEDjxo3RuHFjbZaFiIiIiChHOMFI+zQaQYiNjcWoUaNw7tw5AEDbtm0xZMgQxMfHa7VwRERERESUtzQKEAYPHozbt2+jZMmSAICxY8ciICAAw4cP12rhiIiIiIgo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2LEj/P394efnhwYNGqBo0YyFS4KCgrLNM2TIELRs2RKPHj1CkyZNYGmZ/UIfOaVRgLB06VL8+OOP6NevH/r37w9nZ2eIRCJ06NBBawUjIiIiIlLls1vB6C1HR0c4OubsWkwXFxe4uLhovSw5DhCio6ORlpaGRYsW4fTp02jbti0aNWoEiUSC1q1ba72ARERERESUd9QOEFJSUjB06FBs3rwZAGBvbw+RSITIyEiIxWIMGzYM7dq101lBiYiIiIhI99S+D8LkyZNx5MgR+Pj4QCqVIiwsDKGhoZBKpTh06BB2796NuXPn6rKsREREREQKCsA90bJ86DO1A4Rdu3Zh1apVaNmypcKarGKxGM2aNcOKFSuwbt06nRSSiIiIiIjyhtoBQnh4OOrXr59tep06dfDixQutFIqIiIiIiPKH2tcgpKWloXnz5tne0S01NRXp6elaKxgRERERkUr6Pp+nAFI7QNi0aZMuy0FERERERAWA2gFCnz59dFkOIiIiIiIqADS6URoRERERUUEg4hwjrVP7ImUiIiIiIir8GCAQEREREZGAU4yIiIiISG+JOMNI6ziCQEREREREAgYIREREREQk4BQjIiIiItJbnGGkfRxBICIiIiIiAQMEIiIiIiIScIoREREREekvzjHSOo4gEBERERGRgAECEREREREJOMWIiIiIiPSWiHOMtI4jCEREREREJGCAQEREREREAk4xIiIiIiK9JeIMI63jCAIREREREQkYIBARERERkYBTjIiIiIhIb3GGkfZxBIGIiIiIiAQMEIiIiIiISMApRkRERESkvzjHSOsYIBAREekrsSS/S6B/0tPyuwREBR6nGBERERERkYAjCERERESkt0ScY6R1HEEgIiIiIiIBAwQiIiIiIhJwihERERER6S0RZxhpHUcQiIiIiIhIwACBiIiIiIgEnGJERERERHqLM4y0jyMIREREREQkYIBAREREREQCTjEiIiIiIv3FOUZaxxEEIiIiIiISMEAgIiIiIiIBpxgRERERkd4ScY6R1nEEgYiIiIiIBAwQiIiIiIhIwClGRERERKS3RJxhpHUcQSAiIiIiIgEDBCIiIiIiEnCKERERERHpLc4w0j6OIBARERERkYABAhERERERCTjFiIiIiIj0F+cYaR1HEIiIiIiISMAAgYiIiIiIBJxiRERERER6S8Q5RlrH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dmXLzedV2fupjfqmpKTIe/ToITczM5NXqVJFvmDBArmBgYH81atXQt7g4GB5w4YN5UZGRnIXFxe5TCaTy+Vypd95yij7PlRWpx07dshdXFzk1tbW8l69esljYmKENG9vb7mLi4vc3Nxc3qFDB3lERITCcT98d2elfv368q+++kphW3p6unzu3LnyUqVKya2srOR9+vSRJyQkyOVyuTw6OlrepUsXuaWlpbxJkybyNm3ayKdNm6ZW3XOiIL1n+uLzz4+yttq0aZPc09NT3r59e7mlpaW8ZcuW8vDwcCGvqrbK7u/hlyQiVlYgH/pMJJczDCXSBW9vb3h7exfYm1UREREVBm/iUvO7CFkqaqG/l/rq9RSjvHLx4kVYW1tn+fiwDCBpR3BwcLZt3blz5/wuXr7Lrm3q1KmT30UrkNifvlx874mINMcRBDUkJSVluwSjhYUF7Ozs8rhEhVdqamqmG7R9YGJionJll8IuKCgoy+2GhoZwdHTM28LoAfanLxffe6IvB0cQtI8BAhERERHprTfxBTRAMNffAIFTjIiIiIiISMAAgYiIiIiIBPo79kFEREREXzw9vydZgcQRBCIiIiIiEjBAICIiIiIiAacYEREREZHeEnGOkdZxBIGIiIiIiAQMEIiIiIiISMApRkRERESkt0Rcx0jrOIJAREREREQCBghERERERCTgFCMiIiIi0ltcxUj7OIJAREREREQCBghERERERCRggEBERERERAIGCEREREREJGCAQEREREREAq5iRERERER6i6sYaR9HEIiIiIiISMAAgYiIiIiIBJxiRERERER6SwTOMdI2jiAQEREREZGAAQIREREREQk4xYiIiIiI9BZXMdI+jiAQEREREZGAAQIREREREQk4xYiIiIiI9BZnGGkfRxCIiIiIiEjAAIGIiIiIiAScYkRERERE+otzjLSOIwhERERERCRggEBERERERAJOMSIiIiIivSXiHCOt4wgCEREREREJGCAQEREREZGAU4yIiIiISG+JOMNI6ziCQEREREREAgYIREREREQk4BQjIiIiItJbnGGkfRxBICIiIiIiAQMEIiIiIiIScIoREREREekvzjHSOo4gEBERERGRgAECEREREREJOMWIiIiIiPSWiHOMtI4jCEREREREJGCAQEREREREAk4xIiIiIiK9JeIMI63jCAIREREREQkYIBARERERkUAkl8vl+V0IIiIiIiIqGDiCQEREREREAgYIREREREQkYIBAREREREQCBghERERERCRggEBERERERAIGCEREREREJGCAQEREREREAgYIREREREQkYIBARERERESC/wMpSoLStKcr8gAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 78
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:42:04.800179Z",
     "start_time": "2024-09-18T11:42:04.707887Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 箱型图\n",
    "off_train_data['Distance'].isnull().sum()\n",
    "off_test_data['Distance'].isnull().sum()\n",
    "D1 = np.array(off_train_data['Distance'].values)\n",
    "D2 = np.array(off_test_data['Distance'].values)\n",
    "plt.boxplot([D1,D2],labels=('off_train_data','off_test_data'))\n",
    "plt.title('距离箱型图')\n",
    "plt.show()"
   ],
   "id": "218318a2dbc6b056",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAGxCAYAAADLSHSoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAApJElEQVR4nO3de3xU9Z3/8fckk0wSSALhIhICASQmrEANRS5Ryip9iAKK3V3bIioKLVuwi4hswVWRagWVYqmrtFBXykXsim6puMW1YBVwgXIVJBHUDARCuEjIBJJMbt/fHyzzI+QKOd8kM7yej8d54Jlzzme+E/mevPme7znjMsYYAQAAWBLW3A0AAAChjbABAACsImwAAACrCBsAAMAqwgYAALCKsAEAAKwibAAAAKsIGwAAwCrCBgAAsIqwAVyl/H6/SkpKat1+7tw5vfDCC9qxY0eDa1ZUVOh3v/udjh49Wm3byZMn9d5776m4uPiK2nupnTt36rnnnnOkFgC7XDyuHAh+mZmZ6t27tzwejySpsrJSCQkJysvLU2RkpMrKymo8bsKECVqyZIn8fr+ioqKqbDPGqHfv3rrpppv0+9//vsq2iooK+f1+RUdHy+VyBV7/93//d/30pz/Va6+9pvvvv1/GGJWWlqpdu3aaPHmyli9frt27d6tnz57V2rJ3716988478ng8VWpK54PR6NGj9Xd/93cqKytT69attWrVKs2YMUNHjhwJ7NejRw9lZ2df1s9u+vTpmj9//mUdA+DyuJu7AQAaLzIyUpICIxV//etf9cADD0iSoqKitG7dOg0ZMqTKMaWlpZKkw4cPq3fv3oqMjFRkZGS1X/QffPCBOnXqFFivrKxUaWmpysrKtH//fnXr1k2S9Le//U0/+9nP1KpVK02ZMkXTp09XZWWl4uPjtW7dOi1ZskTh4eHKyMiQdD7MlJSU6MSJE/J4PCooKNCuXbt06NAh5eXladiwYTp16pTWr1+vf/iHf1BGRoZeeeUVrV69Wlu2bJHH4wmEqwvcbrdefvll/fM//3Pgtd/+9rcaMmSI+vTpU+3nduedd1arAcB5XEYBQkBEREStr4WFhSkyMlJRUVFVlri4OMXFxalbt246d+6c8vPzdfz4ce3fv1/33XefFi9erOzsbOXm5urZZ5/Vtddeq9WrV+vEiRM6c+aMzp07FwgaGzZs0B133KGMjAydPn1aN910kx5//HGVlJRo9+7duvvuu3Xbbbfp2LFjmjJlirp06aLPP/9c+/fvDwSlm2++WWvWrNF9992n/v3766233tIzzzwjSVq9erWGDx9eJWCEhYVVC0Zut1tutzvwGbOzs/X4449r9erV1faLiopSWFiYwsPDHf1/AaA6wgYQAi5cJtm0aZM2bdqkvXv3qrKy8rJqTJgwQU888YRKSkrUp08fvf3220pMTFRKSopmzZqlBQsW6Oabb9a2bdvUr1+/wHHGGK1bt0533HGH3n33Xf33f/+3br31Vrnd5wdOP//8c6Wnp2vVqlVq27atxo0bp379+snj8SgxMbFaYCgtLa11tMHlclXb/2IXh66KigpNmjRJ5eXlevHFFxUdHa3o6GjFxMRo27Ztgf3CwjgNArZxGQUIAZGRkRo5cqTmzZunDRs26MYbb9Qtt9wS2H7xf19w77336g9/+ENg3e/3q7KyUrm5udq5c6e2bt2qO+64Q8OGDdPKlSs1duxYTZkyRbfeequ++uqrwHEul0svvviipPPB43vf+57Wrl2rO++8U5L09NNP68CBA+rVq1eV91+zZo0+/fRTpaSkKCcnR//6r/+qyMhI7d27V/n5+Zo4caKOHz8uSRo/frw6dOgQGEmpzcVBZObMmdq4caPGjRun5cuXq6ysTLfccosGDhxY7ZISALsIG0AISEpK0tq1ayVJycnJeuGFF3TzzTcHtq9fv77KL9if/OQnqqioqFLDGKNTp06ptLRULpdLixcvVvv27SVJgwcP1ieffCKPxyOv16va5pW7XC653e4qIwwlJSWaP3++xo8fH3jtyJEjSkpKCuwXERGhxMRERUZGavPmzUpMTFSXLl0CozNdunRRmzZtVFZWpvLy8np/Hps2bdKiRYu0du1aTZ8+XQ8++KCKiooUFxfHZFCgGRA2gBBQUlKi4uJitW3btsbtF+ZsXBAeHl4tMKSmpmrz5s36+c9/LkmaN2+eDhw4oJSUlGr1vvOd71RZf/bZZ7V69Wq53W6Vl5dr8uTJioyM1IsvvljnZYoLIxGdOnXS/PnzdfjwYS1cuFDz58/XmDFjtHHjRr3xxht69tln5XK5NG/evMAk2MrKylovqdx888368ssv1bFjR33xxReaPn263G63Vq1axRwNoBkQNoAQ8B//8R969dVX9fnnn0uS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36pVq2qv/fWvf9WiRYuUmZmp7du3a8KECQ1+ryv5WuqOHTsqNzc3sH748OHLaktNn68xnwFwSkvp7126dNG3v/1t7d69W7t379aePXu0a9cuRURE6JtvvlHbtm21efNmHT9+XB07dtS0adOqHO9yuer9R8PF6urTCxcu1MmTJ3X8+HFt2LBBgwcPrnZ8Te/XkONgB2EjCI0aNUqFhYWaM2eODh06pKlTp6pXr14aMGCAtfe87rrr9Je//EXHjh3TX/7yl3r/NXD27FlJUkFBgTZv3qzHHnvssk40l+v222/XF198od///vf66quv9Mwzz1xWW2r6fE39GYCatJT+PnLkSB06dEjbtm1TeHi43nrrLY0YMULGGJ06dUq33Xab1q1bJ5/Pp7CwMFVWVlar+f777+vo0aP65JNP6m3D3XffrZUrV+rTTz/V1q1btWTJksC2s2fPBt73zTff1KJFi2rs05e+X0OOgyVNPksEjvjss8/MkCFDTGxsrBkxYkRgYqYxxsyePds8+OCDNR5X17a6HD582GRkZBiPx2Ouu+66wISrC3ejXKqsrMyMHTvWtGrVytxwww1m/vz5xu12m7y8vMA+dd2NcjFJJjs7u942vvvuu6Z79+6mU6dOZsaMGYHaDWlLTZ+vIccBTaGl9PcLd6PExMSYAQMGmK1btwaOefXVV01ycrKJiooyAwcONPv27atSc/369aZnz54mKirKjB07tt42VFZWmqefftq0b9/eXH/99WbixImBCaKHDx82gwYNMq1atTLDhw83U6dONX379q33/RpyHOzgW18BAIBV3I2CWmeHp6SkaNu2bU3bmDoESzuBlqyl9KNNmzZp1KhRNW57+OGHtWDBgiZrC+xjZAO1PtI3IiJCiYmJTduYOgRLO4GWrKX0o5KSEuXl5dW4LTY2Vu3atWuytsA+wgYAALCKu1EAAIBVhA0AAGAVYQMAAFhF2AAAAFYRNgAAgFWEDQAAYBVhAwAAWEXYAAAAVv0/2yvwTM8OxF8AAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 79
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:42:19.667819Z",
     "start_time": "2024-09-18T11:42:19.664288Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义函数处理折扣率\n",
    "def convertRate(row):\n",
    "    if row == 'null':\n",
    "        return 1.0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return 1.0 - float(rows[1]) / float(rows[0])\n",
    "    else:\n",
    "        return float(row)\n"
   ],
   "id": "a1ece49325359707",
   "outputs": [],
   "execution_count": 80
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:57:42.004763Z",
     "start_time": "2024-09-18T11:57:42.000535Z"
    }
   },
   "cell_type": "code",
   "source": [
    "def getDiscountType(row):\n",
    "    # 如果 row 是浮点数，直接返回一个默认值或根据你的逻辑返回一个值\n",
    "    if isinstance(row, float):\n",
    "        return -1  # 或者其他表示非折扣类型的值\n",
    "    # 如果 row 是字符串，继续进行判断\n",
    "    elif ':' in row:\n",
    "        # 满多少减多少\n",
    "        return 1\n",
    "    else:\n",
    "        # 折扣率\n",
    "        return 0"
   ],
   "id": "fab0b2f40bd1fcca",
   "outputs": [],
   "execution_count": 87
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:57:42.720035Z",
     "start_time": "2024-09-18T11:57:42.715162Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义函数处理满减类型的折扣优惠券\n",
    "def Man_Rate(row):\n",
    "    if row == -1:\n",
    "        return 0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return int(rows[0])\n",
    "    else:\n",
    "        return 0\n",
    "def Jian_Rate(row):\n",
    "    if row == -1:\n",
    "        return 0\n",
    "    elif ':' in str(row):\n",
    "        rows = row.split(':')\n",
    "        return int(rows[1])\n",
    "    else:\n",
    "        return 0"
   ],
   "id": "a917d9c198e4ff1b",
   "outputs": [],
   "execution_count": 88
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T11:57:43.488041Z",
     "start_time": "2024-09-18T11:57:43.196107Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 调用函数构建跟折扣率相关的四个特征属性\n",
    "off_train_data['Dis_rate'] = off_train_data['Discount_rate'].apply(convertRate)\n",
    "off_train_data['Discount_type'] = off_train_data['Discount_rate'].apply(getDiscountType)\n",
    "off_train_data['Discount_man'] = off_train_data['Discount_rate'].apply(Man_Rate)\n",
    "off_train_data['Discount_jian'] = off_train_data['Discount_rate'].apply(Jian_Rate)\n",
    "off_test_data['Dis_rate'] = off_test_data['Discount_rate'].apply(convertRate)\n",
    "off_test_data['Discount_type'] = off_test_data['Discount_rate'].apply(getDiscountType)\n",
    "off_test_data['Discount_man'] = off_test_data['Discount_rate'].apply(Man_Rate)\n",
    "off_test_data['Discount_jian'] = off_test_data['Discount_rate'].apply(Jian_Rate)"
   ],
   "id": "afeff52deaa364c6",
   "outputs": [],
   "execution_count": 89
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:17:07.855572Z",
     "start_time": "2024-09-18T12:17:07.836201Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 根据label标签来提取正、负样本的全部数据\n",
    "data = off_train_data[off_train_data['label'] != -1]\n",
    "data = data.fillna(-1)\n",
    "data['label'].value_counts()"
   ],
   "id": "166a3bd888b10dcf",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "label\n",
       "1    64395\n",
       "0    64395\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 121
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:17:14.234328Z",
     "start_time": "2024-09-18T12:17:13.985596Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 获取领券日期是星期几，并且构建成特征\n",
    "def getWeekday(row):\n",
    "    if row == 'null':\n",
    "        return row\n",
    "    else:\n",
    "        return date(int(row[0:4]),int(row[4:6]),int(row[6:8])).weekday()+1\n",
    " \n",
    "data['Weekday'] = data['Date_received'].astype(str).apply(getWeekday)\n",
    "off_test_data['Weekday'] = off_test_data['Date_received'].astype(str).apply(getWeekday)\n",
    "# 周六日为类型1，其他为0\n",
    "data['Is_weekend'] = data['Weekday'].apply(lambda x: 1 if x in [6,7] else 0)\n",
    "off_test_data['Is_weekend'] = off_test_data['Weekday'].apply(lambda x: 1 if x in [6,7] else 0)"
   ],
   "id": "d228f59745565475",
   "outputs": [],
   "execution_count": 122
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:17:15.065250Z",
     "start_time": "2024-09-18T12:17:15.055187Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 跟星期相关的独热编码\n",
    "def One_hot(df):\n",
    "    weekdaycols = ['weekday' + str(i) for i in range(1,8)]\n",
    "    tmpdf = pd.get_dummies(df['Weekday'].replace('null', np.nan))\n",
    "    tmpdf.columns = weekdaycols\n",
    "    df[weekdaycols] = tmpdf\n",
    "    return df\n",
    "data = One_hot(data)\n",
    "off_test_data = One_hot(off_test_data)"
   ],
   "id": "b2b0ad549b81faaf",
   "outputs": [],
   "execution_count": 123
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:19:32.391822Z",
     "start_time": "2024-09-18T12:19:32.204532Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "\n",
    "def func(data):\n",
    "    # 提取用户使用的优惠券的数量\n",
    "    f = data[['User_id', 'Coupon_id']].copy()  # 创建一个副本以避免警告\n",
    "    f['rec_coupon'] = 1\n",
    "    f = f.groupby(['User_id']).agg('sum').reset_index()\n",
    "    \n",
    "    # 全部优惠券的数目\n",
    "    f1 = data[['Coupon_id']].copy()  # 创建一个副本以避免警告\n",
    "    l1 = len(f1)\n",
    "    f1['Number_coupon'] = 1\n",
    "    f1 = f1.groupby(['Coupon_id']).agg('sum').reset_index()\n",
    "    # 优惠券的流行度：每一种优惠券占全部优惠券的比例\n",
    "    f1['Coupon_popu'] = f1['Number_coupon'] / l1\n",
    "    \n",
    "    # 提取用户和商家\n",
    "    f2 = data[['User_id','Merchant_id']].copy()  # 创建一个副本以避免警告\n",
    "    l2 = len(f2)\n",
    "    # 提取顾客去商家的数量\n",
    "    f2['Number_merchant'] = 1\n",
    "    f2 = f2.groupby(['Merchant_id']).agg('sum').reset_index()\n",
    "    # 商家的受欢迎度：商家的顾客（用户）占全部商家的顾客（用户）的比例\n",
    "    f2['Merchant_popu'] = f2['Number_merchant'] / l2\n",
    "    \n",
    "    # 合并特征属性\n",
    "    d0 = pd.merge(data, f[['User_id', 'rec_coupon']], on='User_id')\n",
    "    d1 = pd.merge(d0, f1[['Coupon_id', 'Coupon_popu']], on='Coupon_id')\n",
    "    d2 = pd.merge(d1, f2[['Merchant_id', 'Merchant_popu']], on='Merchant_id')\n",
    "    \n",
    "    return d2\n",
    "\n",
    "# 调用以上函数构建相关的三个特征属性\n",
    "new_data = func(data)\n",
    "new_test_data = func(off_test_data)"
   ],
   "id": "182bb38a51ba83f3",
   "outputs": [],
   "execution_count": 125
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:19:33.703225Z",
     "start_time": "2024-09-18T12:19:33.609348Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 定义函数得到跟距离相关的特征属性\n",
    "def Get_mer_dis(new_data):\n",
    "    # 查看距离的类别数量\n",
    "    new_data['Distance'].value_counts()\n",
    "    # 提取用户-商家距离的数据集\n",
    "    md1 = new_data[new_data.Coupon_id != 'null'][['Merchant_id', 'Distance']]\n",
    "    md1.replace('null', -1, inplace=True)\n",
    "    md1.replace(-1, np.nan, inplace=True)\n",
    "    # 用户-商家的距离最小值\n",
    "    md2 = md1.groupby('Merchant_id').agg('min').reset_index()\n",
    "    md2.rename(columns={'Distance': 'merchant_min_distance'}, inplace=True)\n",
    "    # 用户-商家的距离最大值\n",
    "    md3 = md1.groupby('Merchant_id').agg('max').reset_index()\n",
    "    md3.rename(columns={'Distance': 'merchant_max_distance'}, inplace=True)\n",
    "    # 用户-商品的距离平均值\n",
    "    md4 = md1.groupby('Merchant_id').agg('mean').reset_index()\n",
    "    md4.rename(columns={'Distance': 'merchant_mean_distance'}, inplace=True)\n",
    "    # 用户-离商品的距离中位值\n",
    "    md5 = md1.groupby('Merchant_id').agg('median').reset_index()\n",
    "    md5.rename(columns={'Distance': 'merchant_median_distance'}, inplace=True)\n",
    "    # 将所有特征合并在一起\n",
    "    merchant_feature = pd.merge(md2, md3, on='Merchant_id', how='left')\n",
    "    merchant_feature = pd.merge(merchant_feature, md4, on='Merchant_id', how='left')\n",
    "    merchant_feature = pd.merge(merchant_feature, md5, on='Merchant_id', how='left')\n",
    "    new_data = pd.merge(new_data,merchant_feature,on='Merchant_id',how='left')\n",
    "    return new_data\n",
    "# 调用上边函数构建距离相关的特征属性\n",
    "new_data = Get_mer_dis(new_data)\n",
    "new_test_data = Get_mer_dis(new_test_data)\n"
   ],
   "id": "d0f4ff2c92dda5db",
   "outputs": [],
   "execution_count": 126
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:19:34.911027Z",
     "start_time": "2024-09-18T12:19:34.809009Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 距离柱状图\n",
    "x = np.arange(-1,11)\n",
    "dis1 = np.array(new_data['Distance'].value_counts().sort_index())\n",
    "dis2 = np.array(new_test_data['Distance'].value_counts().sort_index())\n",
    "plt.bar(x,dis1,tick_label=x, label='off_train_data', width=0.3)\n",
    "plt.bar(x+0.3,dis2,label='off_test_data',width=0.3)\n",
    "plt.xlabel('距离')\n",
    "plt.ylabel('计数')\n",
    "plt.title('距离计数分布情况')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "9a18661b05482a7e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHDCAYAAADIo3XgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCsUlEQVR4nO3deVxUZf//8ffIsEiyKm6IQmqZFmWGEpp3i5ampi2Wy11pVtpiVmppq1a3UppZd6VZFlJ523JXZt6WuWRqoVGKES6ZoKioaOMMCAwK5/eHP+bbBCIow6Dn9Xw8zuPunOssnzNyM2+uc51zLIZhGAIAADChet4uAAAAwFsIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLQIQgCqxel0qqio6ITtR44c0Ysvvqiff/65yvs8evToCdt+++03LVu2rEr72bhxo9avX19u+ZYtW6pci3T8HP/630uXLq3W9mUeeughLViwoMrrOxwOrVmzRsXFxRW2r1u3Tvv27Tvh9pX9uwCoGEEIMLHNmzfLYrEoICBAAQEB8vPzU9OmTSVJfn5+slgs5aaAgAA9+OCDMgyjwi/ewMBAJSUl6bXXXivXVlJSooKCAv31zT4ffPCBOnbsqAMHDlRY42effaYnnnjihOewZMkS3XDDDTp69Khmz56tGTNmSJK6dOmi1atXq7S0VJdeeqlef/31Kn0m2dnZatWqlVasWCFJ2rBhg6677jr9+OOPVdq+zJ49e/T6668rMzOzytts2bJFV1xxhQ4fPixJOnTokGw2m/Lz85Wfn68BAwbo888/V35+vhwOhw4cOOAKkQcOHNCFF16oTz75xLW/+++/v8J/w7Lpscceq9Y5AWcjghBgYn5+fpKO9yQUFRVp6dKlrmUBAQFavny5CgsL3Sa73a4ZM2Zo165datiwocLCwtSkSRM1bdpUTZs2VbNmzWSz2fTNN9+4ljVt2lSNGzdWw4YNFRERoV27drlq6Nevn/z8/HTNNdfo4MGD5Wq0Wq2umipy5ZVXav/+/Zo+fbr8/Pzk5+enJUuWaO/everSpYs2b96swsJC9evXr0qfSWJioo4dO6ZOnTpJkuLj49W3b189/PDDOnbsWIXbOBwOFRQUqKSkxLVs1qxZCg4O1ujRo8utX1paquLiYuXn57stDwoKknT8s5ek66+/Xi1atFBkZKRatGih/fv3a9y4ca5lkZGR2rRpkyQpIiJCHTp00N133+0KX/7+/urWrZvy8vLKTS1btpS/v3+VPhPgbEYQAkzM19f3hMvq1asnPz8/V29R2RQcHKzg4GC1atVKR44ckc1m0/79+5WRkaGhQ4dqzpw5yszM1N69e/X888+rWbNm+vTTT3XgwAEdPnxYR44cUatWrVzHCwkJ0ZIlS2Sz2TRs2LBy9VgslkrP4euvv9Ztt92mFi1aKDMzU9nZ2crIyFD//v21cuVKLV++XB06dHA7ZlFRkVtoKbN9+3bNnTtXTz/9tEJCQlzLX375ZW3atEnPP/98hTXExsbqnHPOkdVqdfW2/Otf/5LdbldQUFC5nhgfHx/5+/urR48ebvupX7++q77du3dr5cqVysrKUnZ2tnbv3q2oqCi99tpr2r17t3bu3Kn9+/e7ApvFYtG8efMUGBiof/7znyopKVG9evXk4+OjBg0alJvK6gDMzurtAgB4T9lllTVr1kiSfv31V5WWllZrHyNGjFCTJk304IMP6qKLLtInn3yiYcOGKTw8XIcPH9Ynn3yibt26af369brnnnuUlpZWbh9NmjTRwoUL1bhx42qfw4IFC3TgwAHt2rVLO3bsUPPmzbV06VJXENi+fbt+++23coFq9erV6tatm2u+tLRUd955p2JiYnT//fe7rXveeedp6tSpevTRR9WiRQvdc889bu3Lli2TxWKRv7+/rFarHnvsMa1cuVJr1qxRVlaWNm/erAEDBpSr/a89XQkJCRo4cKAkaebMmVq/fr0GDhyo0aNHy9/fXz4+PnI4HHrooYc0duxYOZ1OXX755a5LeJIUGhqqqVOn6vfff3eFLgCVIwgBJubn56c+ffooMTFRK1asUMeOHXXFFVe42v/632VuvfVWffTRR655p9Op0tJS7d27V7/88ovWrVun3r1768orr9SHH36oIUOG6IEHHtDVV1+tP/74w21fKSkprstA/v7+ioqK0t69e11f/NL/9d6UjZspG5vUuHFj+fj46KOPPlJGRoauuuoqnXfeeerYsaOaNm2q559/Xk6nU82aNdPChQt19dVXa//+/WrTpo0yMjLUunVrt1r+9a9/6aefftKaNWsq7Cl7+OGH9ccff+jee+/V1q1bNWXKFFeQadOmjWu99evX68MPP9Rnn32mVq1a6auvvtK0adM0atSoE/47FBUVKTU1VU899ZQkqXfv3lq9erUCAwP18ccfy2o9/qt6xIgRuv3223XllVdKOj7m6ttvv1XPnj1d+/prr1pFvV5/Vd3QC5yNCEKAiUVFRemrr76SJEVHR+vFF1906yVZvny5EhISXPP33XdfuS9XwzB08OBBFRcXy2KxaM6cOWrUqJEk6fLLL9f3338vf39/ZWVluQ2Slo5/4VutVhUXFyswMFA5OTk699xz3e7aKhMWFuY2n5mZqVatWunDDz/UQw89pGeeeUZZWVk6cOCAcnJy1K9fP11//fU6duyYDMNQgwYNXD0lrVu3duuNmTdvnp599lmNGzdOjRo1UnZ2doW9KY8//rj8/f01Y8YMLV68WMnJyYqLi3O179+/XwMHDtSIESPUv39/SccvNZ5sLM6PP/6okJAQXXDBBZKkjh07atmyZZo9e7aOHDkiHx8f1+U2Sdq3b58Mw1BJSYnbJby/Ky0tVUlJSbmxSNLxfzeCEEAQAkytqKhIhYWF5UJGmbIxQmV8fHzKhZl27dpp7dq1eu655yQdH2y8bds2nXfeeeX2949//MNt3mazSZKSkpI0adIkScfvtiq7xCRJ06dP15IlS7R8+XK3uoODg5WTk6O3335b7777rq666iq9+OKL6tSpk+6//37NnTtXiYmJCg0N1caNG9W/f3/t3btXkZGRbiEoPT1dI0aM0KhRo+RwOMr1FP3dk08+qf/973+aNGmS2znabDb17dtXu3bt0ttvv623337bbbu/B6u3335bd999t+tzffLJJ93W8ff316BBgxQZGXnCWhYuXKg+ffqUW7537141b95cTqdTa9ascQ3C/jtutwckGQBM64033jDat29vGIZhtGrVyrjhhhuMu+66y/j444+NkJAQY/Xq1W7rjxgxwrjzzjsr3ecPP/xgWK1W44cffqhyHe+9957RunXrCtumTp1qdO3atcK20tJSw2azGUeOHDHeeecdIywszNi/f79x9OhRY+vWrUaPHj2MV155xbjqqqsMwzCMGTNmGNdee225/aSmphqlpaWG3W43/vzzT+Orr74yJBlbt2418vLyXFNgYKDx9ttvl9t+9+7dxsUXX2y0bNnSuOyyy4yRI0ca2dnZRnZ2tvHSSy8ZrVu3ds1nZ2cbTZs2NZKTk8vtJzMz05Bk5OXlGYZhGDabzZBkZGZmllu3YcOGxtKlS8stt9vtRuPGjY3333/ftSwyMtKYP3++YRiGIancvytgZvQIASYWGBjoulNJknbs2KGcnBx17NhRkvTnn3+6PcCvsLDQ7U6j22+/Xf/5z3/c9llaWirDMCocXyRJl112mVJSUmqkfrvdXq43q0mTJq7/zszMlMVi0eOPP65Dhw7phx9+UNeuXcvtp+zOq+DgYNd2oaGhbj0+drtdBQUFatmypdu2O3fuVOfOnRUYGKgVK1Zo7NixatCggVq0aCHp+CU9q9XqmpeO9wBVNA7p7+rVq/zG3or28cILL8hisbgeF3D06FHl5uaqYcOGJz0eYEbcPg/AZdasWVq/fr0efPBBSVL//v3VrFkz1zR//ny38Tu+vr568MEHdezYMR07dkwffPCBwsLClJubq2PHjuno0aNKTk52tb/zzjsnfBZPmWeffVaHDh2qUr0hISE6ePCgUlNTFRgYqD/++EOFhYWaPHmy4uPjFR0drVatWqlz586aNm2alixZUu6W9YosXLjQNSC5zO7duyUdH1f1V61atdK0adO0du3ak15Wq66yIHT++eeXe4xBRZ/Rli1bNHPmTCUmJrrGDq1bt05Hjx7VxRdfXKO1AWcLeoQAnNDfbzH/u7/2WKSlpWnkyJF6+eWXXYOls7KyNGLECB07dkx33HHHSY83btw4vf322+rTp0+VejAsFosaNmyokSNHqkmTJvruu+/UsWNHvfHGG5o7d65rvUcffVQ33XSTLr74YrfB3xVZsWKFli1bpkWLFrkt37Nnj6TyQUiS27kZfxtDVZHqDlLeunWroqOj3ZaVfcZ/Pe7IkSN16aWX6s4773Qt//e//62EhAS3nrIyZaG0bDwWYEb89AOQdPyL9Ntvv9XKlSvVvn37am/ft29flZSUaMuWLbr99tu1Z88e7dq1S0ePHtW4ceN0ww03nHDbwsJC7dixQ++9956WL1+uyy67rFrHfvXVV7Vs2TJ9/fXXGjFihCwWi9asWaNOnTqpWbNmrru2AgMDVVBQoMDAwAr3s2bNGg0cOFD9+vVT37593dq2bdum0NBQNWjQoNJaKrrjrcy8efOUmpqqffv2KSIiosrn99fb88v8/e691157TWvWrFFKSopr0HVSUpI++eSTE74rbcuWLerRo4cWL17sujwImA2XxgCT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u+rXr6/rrrvO1Zaamqpx48Zp9uzZSkhI0IABAzxRKwAAQI2q8hihn3/+WePHj1dYWJj279+vZ555RkOGDFFMTIzGjBmj22+/XQcPHlR4eLieeOIJT9YMAABQI6rcI/T6669LktLT05WcnKx169ZpxYoVevzxx/XCCy+41pszZ45iY2M1ePBgXXTRRTVfMQAAQA2pco/Q2LFjNXz4cC1ZskQ2m03Jycm644471KZNG/Xr10+ffvqpjhw5oquvvlpPPvmk9uzZ48m6AQAATluVg9CUKVN0zTXXKD8/Xz4+PhoyZIh69+6tYcOGKSUlRfPmzVPr1q3VsWNH3XvvverVq5cn6wYAADhtVb40dsstt8jPz0+5ubnat2+f2rVrp//+97+6/PLLFRYWpkWLFmngwIFaunSp9u3bp6ZNm3qybgAAgNNW5R6hW2+9VbfeequuuOIKbd++XfXr19fNN9+sbt266dChQ/rhhx+0fft2vfTSS3r44Yc9WDIAAEDNqHIQ6tq1q6ZPn66goCANGDBAO3fuVP369fXbb79JksaPH68WLVpo0KBB+uOPP/T77797rGgAAICaUOVLY8uXL9eECRNksVi0ZcsWvf766+rWrZtSUlIUGBiotWvXKicnR5I0aNAg/fDDD2rbtq3HCgcAADhdFsMwjOpscPToURUXF+vAgQMqKCjQBRdcoHXr1unyyy93rXPkyBGdc845NV6sNzgcDoWEhMhutys4ONjb5dSa6AmLq7V+VsCQ6h1gkr166wMAUA1V/f4+pXeNWa1WXXTRRcrPz5cktxAk6awJQQAA4OxW7bfPS8ffN1a/fv2argUAAKBWnVIQko6HodNVdrfZwYMHT3tfAAAA1VXlS2NPPPGEAgICXPMFBQV67rnnKly3sLBQU6dOrXR/CxYs0H333afo6Ght3bpV7777rgYNGqT09HQNHz5c27dv1913362XXnrJFbo80QYAAMyryj1CTqdThYWFrskwDLf5v07FxcWV7uvw4cMaPXq0Vq9erQ0bNuitt97S448/LqfTqX79+qlTp05KTU1VRkaGkpKSXMev6TYAAGBu1b5rrEzjxo114MCBUzpodna2vv/+ew0dOlSStGnTJnXr1k3Jycm66667tHv3bgUGBiotLU0PPPCA1qxZoy+++KLG26qCu8aqhrvGAAB1icfuGitzivlJkhQVFeUKQUePHtX06dN10003KS0tTfHx8QoMDJQkxcbGKiMjQ5I80lYRp9Mpp9Ppmnc4HKd8ngAAoG47pcHShmG4bp2XpLy8PF1zzTVKT0+v1n7S0tLUpEkTLV26VDNnzpTD4VBMTIyr3WKxyMfHRzabzSNtFZk6dapCQkJcU1RUVLXOCQAAnDmqFYQOHDigTz/9VBaLRd98841reVBQkP75z3+qZ8+e2rhxY5X3Fxsbq+XLl6tDhw4aPny4rFar/P393dYJCAhQQUGBR9oqMnHiRNntdteUnZ1d5fMBAABnlipfGrPZbOrRo4cuv/xy9ezZUw8//LB8fX3l4+Mj6XgvUXFxsa6++motXbpUl1122Un3abFY1LFjRyUlJalVq1aaOnVquV6lvLw8+fn5KTw8vMbbKuLv718uOAEAgLNTlYPQww8/rJ49e+rll1/WoUOHZLPZyt19dezYMW3evPmk7xhbsWKFlixZomnTph0vwnq8jHbt2umdd95xrZeVlSWn06nw8HDFxcXVeBsAADC3Kl8amz59ul5++WVJUmlpqfz9/fWPf/zDbbrmmmv04IMPKiQkpNJ9tWvXTm+99ZbmzJmj7OxsTZgwQddee6369Okju92u5ORkSVJiYqJ69OghHx8fde/evcbbAACAuZ3S7fNHjhzRf//7X91xxx2nfOBvvvlGjzzyiHbv3q3rrrtOb775piIiIvTFF19oyJAhCgoKUklJiVatWqUOHTpIkkfaTobb56uG2+cBAHVJVb+/T/k5Qp60Z88epaamKiEhQRERER5vqwxBqGoIQgCAusTjzxHypMjISEVGRtZaGwAAMKdTfukqAADAmY4gBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsg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zZ49W5MnT/Z2GS4pKSlatGiR1q1bp/bt22vq1Km6/vrrtX79elksFq/WNm7cONdlp4CAAP3444+u10R5Q0V/cJ4t3w0EIS9p0qSJt0uoMqvVWu4R6gEBASooKDijfti95dtvv9Xs2bOVkpIiX19fb5fjxmKxqGPHjkpKSlKrVq28/gvs+eefV1xcnPr06eO1GqoqNDRUpaWlysnJ8XoQ2r17t7p06eL6Q8pqtSo2NlaZmZlereuvtm/fru3bt6tHjx7eLsXlo48+0qBBg9S5c2dJ0gsvvKDZs2crLS1Nl1xyiVdrCw8P19q1a7V9+3ZNnz5dNptNQ4YM8WpNf3e2fDdwaQwnFR4ertzcXLdleXl58vPz81JFZ44dO3Zo6NChmjVrltq3b+/tclxWrFih8ePHu+at1uN/E9Wr591fCfPnz9fChQtdl4rnz5+v+++/v05cUnz00Uf18ccfu+Z/+ukn1atXT1FRUV6s6rioqKhyPcw7d+5Uq1atvFRReR9//LH69u1bp/4YOHbsmPbv3++az8vL05EjR1RSUuLFqtw1b95cn332maZOnVrnXhR+tnw30COEk4qLi9M777zjms/KypLT6ayTl/HqksLCQvXt21cDBgxQ//79lZ+fL0k655xzvN7t3q5dOw0YMEBt27ZV79699dRTT+naa6/12viDMqtXr9axY8dc8+PGjVN8fLyGDRvmvaL+v0suuURPPvmkmjZtqmPHjmn06NEaNmyYa3yEN/Xp00ejR4/W7Nmz1bdvX3322WfauHGjevXq5e3SXL7++msNHz7c22W46dq1q+666y698soratKkid555x01adJEsbGx3i7N5d///rfr/691zVnz3eDt0do4MdWRu6COHj1qREREGPPmzTMMwzBGjhxp9O3b18tVlVdXPq8yn3/+uSGp3FRXavz666+NCy64wAgKCjJuueUW48CBA94uqZy6dNeYYRjGhAkTjNDQUCMqKsp46KGHjPz8fG+X5PLjjz8aCQkJRv369Y2YmBjj888/93ZJLgUFBYafn5+xefNmb5fiprS01Jg0aZLRsmVLw9fX1+jYsaORmprq7bJcbDabER4ebqxfv97bpbj89XfYmfLdcDK8dBVV8sUXX2jIkCEKCgpSSUmJVq1apQ4dOni7LABALbJYLMrMzHTd+Xc2fDcQhFBle/bsUWpqqhISEhQREeHtcgAAdcCZ/t1AEAIAAKbFXWMAAMC0CEIAAMC0CEIAAMC0CEIATMkwDDmdzgrbjh07ptWrV+vo0aO1XBWA2kYQAnBWmTZtmho3bqwLL7xQbdu2VZcuXbRy5UoFBAQoOjraNcXExCgmJkZ2u71c4CktLdVtt92mxYsXuy0vKSlRcXFxbZ4OAA/jrjEAZ5VXX31Vubm5euGFF5Senq5Ro0Zp2rRpmjhxor777rty6+/du1e9e/eWr6+v61Ujf+V0OuXv7y/DMHT06FF17NhRc+fOrYUzAVAbeMUGgLPK399lZbVaK32lSfPmzZWWlqZFixape/fueuyxx5Sfn68+ffrI6XTqpZde0iOPPKIbbrhBW7duVZcuXTx9CgBqEZfGAJxViouLtXPnTn333Xf66aefVFpaWqXt7r//fuXl5emll15S27Ztdf/99+uxxx5Tu3btFBcXp61bt2r06NEerh5AbSMIATirtG/fXuecc44efvhhJScnq0+fPpKklJQUtzFC/v7++vrrr13b+fj4qLi4WIMHD5ZhGNq2bZv27NmjXr166fHHH1dRUZHq1eNXJnC2YYwQgLNKUVGRrFarJkyYoAsvvFDDhg1TSkqKJkyY4DZGKD4+XlOnTtVVV10lSWrWrJlCQkIqHCdUtt/g4GD98ssvtXEaAGoJY4QAnFWGDx+unj17SpJeeOEFvfbaaxoyZMhJt8vJyXH9965du9S7d2+tXbtWoaGhnioVQB1AEAJwVvH395efn58k6amnntKdd96plJQUTZw4UY0aNXKtZ7fbXc8RGjlypNauXetqs9lsOnz4sLp161Zu/w899JDuvfdeD58FgNpCEAJwVrNYLLJYLOratWuFt89L0r59+zR9+nT16tVLX375pSZNmqTff/9dgYGBSk5O1vnnn68uXbrohRde0IEDB2r3BAB4FEEIwFlr69atevPNN1W/fv1K1yu7vX7hwoW65ZZb9Mwzz+jdd9/VgQMH9O2332rHjh3auHFjLVQMoLYRhACcNbKysrR161b9/PPP2rVrlyIiItS5c2ddd911J9zGMAzXLfYtWrTQgAEDZBiGGjVqpMsuu0yjRo3St99+K5vNJofDwZgh4CxDEAJw1rDb7WrcuLHGjBmjq6++Wo0bN5Ykff/99/rll1/cxggZhqEjR47oww8/VGFhoSSpU6dO+uSTT8rt984771T79u1ls9k0f/782jkZALWC2+cBoApKS0t5jhBwFiIIAQAA0+LPGwAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFoEIQAAYFr/D3iRytA+iXr2AAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 127
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:19:35.957465Z",
     "start_time": "2024-09-18T12:19:35.907335Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义变换距离类型的函数\n",
    "def get_distance_type(row):\n",
    "    # 距离未知\n",
    "    if row == -1:\n",
    "        return -1\n",
    "    # 1千米内\n",
    "    elif row >= 0 and row <= 2:\n",
    "        return 0\n",
    "    # 1.5-2.5千米内\n",
    "    elif row >= 3 and row <= 5:\n",
    "        return 1\n",
    "    # 3-4.5千米内\n",
    "    elif row >= 6 and row <= 9:\n",
    "        return 2\n",
    "    # 5千米\n",
    "    elif row == 10:\n",
    "        return 3\n",
    "    # 构建距离类型的特征属性\n",
    "new_data['Distance_type'] = new_data['Distance'].apply(get_distance_type)\n",
    "new_test_data['Distance_type'] = new_test_data['Distance'].apply(get_distance_type)"
   ],
   "id": "f8bf34bc1dc3ef71",
   "outputs": [],
   "execution_count": 128
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:19:36.845355Z",
     "start_time": "2024-09-18T12:19:36.839069Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 新距离类型分布情况\n",
    "new_data['Distance_type'].value_counts()\n",
    "new_test_data['Distance_type'].value_counts()"
   ],
   "id": "72d5c4440864aff6",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Distance_type\n",
       " 0    71864\n",
       " 1    12917\n",
       "-1    12064\n",
       " 3    10353\n",
       " 2     6442\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 129
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:19:59.281073Z",
     "start_time": "2024-09-18T12:19:59.174356Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 距离柱状图\n",
    "x1 = np.arange(-1,4)\n",
    "dis_type1 = np.array(new_data['Distance_type'].value_counts().sort_index())\n",
    "dis_type2 = np.array(new_test_data['Distance_type'].value_counts().sort_index())\n",
    "plt.bar(x1,dis_type1,tick_label=x1, label='off_train_data', width=0.3)\n",
    "plt.bar(x1+0.3,dis_type2,label='off_test_data',width=0.3)\n",
    "plt.xlabel('距离类型')\n",
    "plt.ylabel('计数')\n",
    "plt.title('距离类型计数分布情况')\n",
    "plt.legend()\n",
    "plt.show()"
   ],
   "id": "3ba0d3dc1130c6de",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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NUo//PCDmjVrpu+++07XXXedAgMDq/T/WAgaM2aM6/NevXq17rjjDq1YsULR0dGy2+2y2WwqKiqSxWLRvHnzVFZWJqfTqfLycrf9TZ06Vf/617/UuHHjk37uwLmAIAScpXx8fDRw4EAlJSVpyZIluvjii93OHlR3JuHWW2/Vp59+6pp3Op2qrKzUnj17tG7dOq1evVrXXnutrrjiCn388ceKi4vTww8/rKuuukrbtm1z29ff/vY3FRYWugWPZ555Rh988IFKS0v1yiuv6MiRI1q9erWmTJmipk2bSpJrjFF2drb+9a9/ycfHRxs3blReXp7uvfde7d+/X5IUHx+vsLAwtWnT5rifwa+//qrS0lLXD3aPHj108OBBSf//ktix8UUOh8MVPpxOpxo3bqxGjRpp7NixevDBB3XdddfpwgsvVHFxsa644grdcMMN6tSpk7p166YnnnhCzz//vCTpkksu0ZNPPqmhQ4e69WXZsmWaPHmyXnnlFXXo0KFKX3v06KGUlBTdcccd2rNnj1JSUlxjulq2bOlaz+Fw6MUXX9Qjjzyiyy+/XL/++qtGjx6tIUOGuNavzpo1a3T77bdLkmJiYvTjjz9q8eLF+uyzz2Sz2WSxWDR16lRZrVY98sgjko6OZ/r888914403uj6vCy+80BXkKioqjtvese2Bsx1jhICzVEREhBYsWKAFCxaoWbNmeumll5SSkuKq/3WMUHx8fJWzLoZh6ODBg64wMXPmTI0bN049e/bUW2+9pWeffVbnnXeesrKyqgyStlqtrhB06NAh3XLLLXr//ff17bffKjAwUJWVlerdu7c2btyojh076qOPPpL0/y9VeXt7u8av5Ofnu8axhIWFSTo6dqd58+YqKyurctbimLFjx6pfv37q27evLr74Yu3cuVN33HGHwsLCFBISopCQEPXr10+S1LRpU9eyFi1auMYzrV69WjExMQoPD9fEiRNVXl6uoKAg9evXT/PmzVN6errKy8vVuHFjNW7cWPv371ebNm3cAmB6erpuuukmxcbGauDAgdq1a5dycnKqTL1799bMmTO1Zs0aderUye37kuQaUxUaGqpJkya5PidJJxyPU1xcrLS0NMXGxko6egnxp59+UsuWLbVv3z7t3btX+/bt09ChQ3XLLbdo3759ruV79uyp8t0ecyzoFBYWVpnKy8sJQjgncEYIOEuVlJSouLhYISEh1db/OkbIarVW+cHr2LGjVq5cqRdeeEGSlJSUpC1btuiCCy6osr/LL7+8yrLt27dr9uzZev3119WzZ0+tXbtW4eHhKi0tldPpVLdu3bR27Vq98MILuuuuu/TZZ5/p/fffV9OmTdWiRQtNnjxZu3bt0uuvv67JkydryJAhWrFihT744ANNnDhRFotFSUlJrjvcKisr3S7XfP3115KkrKwsRUZGym6369NPP5XFYnGN31mzZo0uv/xyFRYWus4IlZWVydvbW2VlZXrjjTc0dOhQPffcc5o+fbquueYaPfTQQ/Lx8dG7776r4OBgbdiwQdLRQc35+fmKjIx09aG4uFhDhgxRhw4dFBcXpwsvvPCE31vv3r21du1a3XnnnercubNruWEYevDBB1237x+73HjMn88aSdKwYcNc4fLgwYMaOXKk2/6OrdOlSxf99ttv1fbl8ccf18svv1xl+YEDB9SkSRPXYwACAgKq3b579+4nOlTg7GAAOCu9/fbbRqdOnQzDMIw2bdoY119/vXHPPfcYn332mREUFGSsWLHCbf0RI0YYd9999wn3uWrVKsNmsxmrVq06afsVFRXGZZddZlx00UXGvHnz3GpXX321MXXqVLdlCxYsMK699lqjqKjItWzFihXG+eefb3Tv3t0oLy83DMMwvv/+e0OS23qGYRgzZ840Bg4caHTv3r1KX3bs2GFIMrKzs6vU/ve//xmSjLKysmqPIz8/3ygsLDR+//13Q5KxePFio6yszCgpKTGGDBlifPTRR4avr69RUlJirFu3zvD393f19Zht27YZhw4dMoqKioyDBw8aBw8eNKxWq/Hee+8ZBQUFrql///7GsGHDqvShpKTEGDZsmOHj42MMGjTIiIqKMrKzs43s7GxjxYoVhiRj3bp1rmU33nijcc8991R7PG3atDG+/vpr1/xFF11kfPDBB1XWu/nmm42nnnqq2n3079/fGDFihGt+2LBhxv33328YhmFcfvnlxsSJE6vdDjgbcUYIOEv5+/u7nTXYvn279u7dq4svvljS0TvB9u3b56oXFxe7DdC988479cknn7jts7KyUoZhHPdOpb///e9KTU2VdPSW6ilTpigsLExWq1U5OTmu9Q4ePKjMzEy3ZVFRUXrzzTe1a9cuXXjhhSorK9OECRPk4+Oj+fPnu/rWsWNHjR49WpMnT3a7dXzdunX6/fffXc/nqS2XXXaZ2yDwY5fSJCk5OVnDhg3TM888o0WLFmnXrl269NJLq9wt1a5dO9ef/fz8lJGRoYqKCnXv3t3tjqv9+/frkksucdu2vLxcV199tX7++Wd9+eWX2rp1qz766CO1atVKklxnw8477zzXGCF/f/9q7xqszrE7v6pT3T6+/fZbLVq0SCtXrnQt27Nnj2JiYmrUHnC2YYwQcI6YPn261qxZo1GjRkmSbrjhBp133nmuac6cOW5PPPb29taoUaNUXl6u8vJyffTRRwoJCVFubq7Ky8tVVlamlJQUV/29995zG6szb9489enTR126dHGb/va3vyk9PV3vvfdelVqXLl1cD+Hz9vbW559/ruXLl8vb21sOh0OFhYUKCgrSRRddpFdffdVtTEpiYqJ+/PFHDRo06ISfw+zZs6t9ntDxLFu2TIcOHVJERITmzp2r4uJiLV26VH5+frrhhhskSXfccYdef/11ffbZZ65nGp3I/Pnz1aRJE0VFRbktz8nJUUREhNsym82ml19+Wd99991Jj+10eHl56b777nM9ePPY9OcHYB7jdDr16KOP6q677lLPnj0l/f/xR926dav1vgENAUEIOEetWLFChmG4TX++Y+zPZwrS09P1wAMP6KWXXnLd3ZWVlaURI0ZUGdB7zN13362SkhIVFBTo8OHDrmnkyJFq27at/Pz89P7777uWOxwO10MdjwkODtbrr7+u5s2bKzg4WAEBAQoICFB8fLwcDodrPiAgQKGhoWrRooX++OOP4x7zf/7zH913331KS0ur8ecUHBysOXPmaN++fcrJyVFmZqYSExP10EMPKTg4WJL08MMP66efftLq1as1YsSIE+7vwIEDmjp1quLj490+Y6fT6Qpcf9WrVy/XQGfjOAOX/+xUBym/++67rgdvHptuvPHGKutNnDhRBw4cUFJSkmtZcnKyKioqXA+X/KsTvbIFOBsQhIBzgGEYWrx4sSZOnOh6KvCpGDRokCoqKvTbb7/pzjvv1FVXXaV+/fqprKxMTzzxhA4fPlyj/XzxxRd6/fXXlZycrE8++UTx8fF6//33T7jNmDFjtH//fuXl5bmeWvzhhx+qSZMmbk8y/uOPP7R3716FhoZW2UdxcbGko6/2mDZtmh588MFTOv677rpLn3/+uXbt2qXY2FgtXrxY27dv1/r16yUd/bEPDAxU48aNVVBQcNz97NmzR/3795e/v3+VZwz9/vvvMgyj2iD0Z38+a/dXy5Yt01NPPaXFixe77q6riREjRshms7lN//73v93WSUtL08svv6znn3/edQnul19+0dixY/X4449X+wwjSbrgggv07rvv1rgvQEPDGCHgLJSVlaW5c+dq06ZNatKkiaxWq9asWaOLL75YkZGRqqio0K5du6rcLVRZWany8nJFRUW5nXmIiorSL7/8oqysLHXt2lUDBw5Uhw4d1KxZMz300EMqKCg44VmI9PR0TZ06VZ988ok++OAD1x1m8+bN09ChQzV79myNHj1agwcPdo2vKS0t1caNG+Xr61tlzM0ff/yhiooKtzFGxxw4cEDe3t7629/+5ta+1WpVcnKy7rjjDrf1jx3nic60BAYGqmfPnlqwYIGCgoL08ccf64cfftDSpUuVk5OjESNGaOjQodq+fbtiY2O1YMECt7E+5eXlmjNnjp5++ml5eXlp0aJFrrNJqampWrhwob799lsFBQWpY8eOx+3HsX7++Vb5Y5+7YRjy9fXVG2+8od69e+uBBx6odvuKigq3YzUMQ7NmzVJ8fLzbesfeqfbn9W6++Wb985//VHl5ud5//3098cQT6tGjh5577jnXejabTWvWrNHmzZu1bds2ZWdnuz2dGjjr1P/4bABnKj8/37jmmmuMGTNmGNu2batSb9q0qREUFFRlCggIMFq0aGEYhmHccccdxqOPPmoYhmE4HI7jtrVnzx5j9OjRRo8ePYxevXq5lv/yyy/GPffcY3Tq1MmQZAwYMMDYsGFDle337t1rjBgxwvDy8jJCQkKMxx57zDAMw8jOzjasVqvh7+9fbV+PN/n6+ho9e/Z0a6OystJYuXJltf1fsmSJIcnIz8+vtv7VV18ZN998s9G4cWNj5MiRxqFDhwzDOHon2MCBAw0/Pz/j9ddfNwzDMI4cOWJcddVVhre3t/Hhhx+69vHpp58aXl5eRnx8vJGbm1vl+ENCQox+/fpVuZOvJjIzMw1Jxs6dO13HeiLBwcHGF1984ZqPioqqctfYqlWrjK5du1Z791dlZaURGxtrWCwW48EHHzRKSkrc6u+//77Rrl07Izg42GjSpIlx2223VbmLDjibcEYIOAsFBATou+++O249Nzf3pPsoLS11/fl4lz0kqXnz5vrkk09k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s9nk7+/vtt2CBQvk7e2tZ599VhaLRaNHj9add94pSbJarfL29pbT6VSzZs301Vdfue6SDggIcO0jMDCwxn35z3/+o2HDhik2NlaSdO+992r16tWSpPPPP1/79u2Tt7e31qxZI8MwtGXLlpO2d6LtPMEjZ4TKy8u1f/9+13xBQYGOHDkim82m1NRU1/KsrCw5nU6FhoYqOjq61msAANREdna22zALu92uli1b1vtVg927dys3N1chISEKDg7WLbfcotzcXJWUlMjPz0+ff/65Zs6cqbCwMA0YMEDbt28/o/b27t3rNkSkXbt2rj8XFxfr3nvvVdu2bTVp0iTZbDZVVFScdJ+nu11d8UgQ6t27t/7973/rtdde05w5czRkyBA1b95c//znP+VwOJSSkiJJSkpKUt++fWW1WhUbG1vrNQAAaqJ169basWOHa76kpER79uyp8R1gp8PLy6vKc+9atWqlv//979qwYYM2bNig9PR0rV+/Xt7e3jp06JBCQkK0cuVK7d+/X82aNdPo0aPdtrdYLKf0LL1mzZppz549rvldu3a5/vz6668rNzdX+/fv15IlS9SzZ88q21fXXk22q08eCUK33XabnnzySU2dOlXx8fE6fPiw/v3vf8vb21szZ87UyJEj1bx5c33xxRdKSkqSJNlstlqvAQBQE4MGDVJBQYEmTJignTt36tFHH9X555+v6OjoOmuzQ4cO+v7777V37159//33qqio0MCBA7Vz506tWbNGVqtVc+fO1YABA2QYhg4ePKirr75a//3vf5Wfny8vLy9VVlZW2ec333yj3bt368cffzxpH2644QZ9/PHHWrVqlVavXq13333XVSssLHS1O2fOHE2fPr1K6KmuvZpsV58sRgN8zPLu3buVlpamXr16KSwsrM5rJ5Kfn6+goCA5HA4FBgae/kGhwWo79huPtJuVNNAj7QKeVFJSoh07digyMlK+vr6e7s4p2bhxo0aOHKmNGzeqd+/eevfdd9WqVStJ0vjx45WVlVXtc39OVDuR7Oxs3X777UpLS1NERIQyMzPl7e2ttWvXatSoUcrIyFDnzp311ltvucbcTps2Ta+88or27duniy66SLNmzVLnzp1d+1yyZInuv/9+7d69WzfddJPb4OfqGIah8ePHa9q0aWrSpIkuu+wy/f7771q2bJmys7N16623auPGjerZs6c6d+6spUuXKj09/YTt1WS7mjrR36ea/n43yCDUkBCEzn0EIaD+nM1BCA1PbQQhXroKAEA9Cw4OrnY6dmanvvz000/H7cvjjz9er33xFI/cPg8AgJlt2LCh2uXe3t712o9jA6+r8+db4M9lBCEAAOpZ27ZtPd0FSUcfMNxQ+uIpXBoDANQ7hqeiNtTG3yOCEACg3hy79HO81xwBp+LY36MzuaTIpTEAQL2xWq0KDg7WgQMHJEn+/v6ul3MCNWUYhoqKinTgwAEFBwef0UOSCUIAgHrVokULSXKFIeB0BQcHu/4+nS6CEACgXlksFp133nlq1qyZysrKPN0dnKW8vb1r5XVZBCEAgEdYrVbe+wiPY7A0AAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLYIQAAAwLZunOwCY1vggD7TpqP82AaAB44wQAAAwLYIQAAAwLYIQAAAwLY8EoeTkZFkslipTcnKyMjIyFB0drZCQECUkJMgwDNd2dVEDAADm5ZEgFBcXp7y8PNeUnZ2tpk2bqmfPnho8eLC6d++utLQ0ZWZmKjk5WZLkdDprvQYAAMzNI0HIx8dHwcHBriklJUU33XSTNm3aJIfDoSlTpqh9+/ZKTEzUrFmzJEkLFy6s9RoAADA3j98+X1JSotdff12rV6/W7NmzFRMTI39/f0lSVFSUMjMzJUnp6em1XquO0+mU0+l0zefn59fyEQMAgIbC44Ol58yZo5iYGLVt21b5+fmKjIx01SwWi6xWq/Ly8uqkVp1JkyYpKCjINUVERNTBUQMAgIbA40FoxowZGjlypCTJZrPJbre71X19fVVUVFQnteqMGzdODofDNWVnZ5/pIQIAgAbKo0Fo69at2rp1q/r27StJCg0NVW5urts6BQUF8vHxqZNadex2uwIDA90mAABwbvJoEPrss880aNAgeXt7S5Kio6OVmprqqmdlZcnpdCo0NLROagAAwNw8GoT++9//6sorr3TNx8bGyuFwKCUlRZKUlJSkvn37ymq11kkNAACYm8Xw0NMFi4uLFRwcrPT0dHXs2NG1fN68eYqLi1NAQIAqKiq0fPlyde7cuc5qJ5Ofn6+goCA5HA4uk52j2o79xiPtZvnG1X+jvHQVgEnU9PfbY0HoRHbv3q20tDT16tVLYWFhdV47EYLQuY8gBADnnpr+fnv8OULVCQ8PV3h4eL3VAACAOXn89nkAAABPIQgBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADTIggBAADT8ngQGjt2rAYPHuyaz8jIUHR0tEJCQpSQkCDDMOq0BgAAzMujQSgjI0PTpk3T1KlTJUlOp1ODBw9W9+7dlZaWpszMTCUnJ9dZDQAAmJvHgpBhGHrggQf02GOPqX379pKkhQsXyuFwaMqUKWrfvr0SExM1a9asOqsBAABz81gQevfdd7VhwwZFRkZqwYIFKisrU3p6umJiYuTv7y9JioqKUmZmpiTVSa06TqdT+fn5bhMAADg3eSQIFRYW6plnntH555+vnJwcTZkyRbGxscrPz1dkZKRrPYvFIqvVqry8vDqpVWfSpEkKCgpyTREREXXwCQAAgIbAI0Ho3//+t44cOaIlS5bo2Wef1aJFi3T48GG9//77stvtbuv6+vqqqKhINput1mvVGTdunBwOh2vKzs6uhSMGAAANkUeCUE5Oji699FKFhoZKkmw2m6KiolRSUqLc3Fy3dQsKCuTj46PQ0NBar1XHbrcrMDDQbQIAAOcmjwShiIgIFRcXuy3buXOnXn31VaWmprqWZWVlyel0KjQ0VNHR0bVeAwAA5uaRIDRw4EBt2rRJM2bMUE5Ojt544w1t2LBB11xzjRwOh1JSUiRJSUlJ6tu3r6xWq2JjY2u9BgAAzM1ieOjpgqmpqRozZozWr1+vFi1aaMqUKRoyZIjmzZunuLg4BQQEqKKiQsuXL1fnzp0lqU5qJ5Ofn6+goCA5HA4uk52j2o79xiPtZvnG1X+j4x313yYAeEBNf789FoROZPfu3UpLS1OvXr0UFhZW57UTIQid+whCAHDuqenvt60e+1Rj4eHhCg8Pr7caAAAwJ4+/awwAAMBTCEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0CEIAAMC0PBKEHnnkEVksFtfUoUMHSVJGRoaio6MVEhKihIQEGYbh2qYuagAAwNw8EoR+/vlnffPNN8rLy1NeXp7Wr18vp9OpwYMHq3v37kpLS1NmZqaSk5MlqU5qAAAA9R6EysvLlZGRodjYWAUHBys4OFgBAQFauHChHA6HpkyZovbt2ysxMVGzZs2SpDqpAQAA1HsQ+uWXX2QYhrp16yY/Pz8NGDBAu3btUnp6umJiYuTv7y9JioqKUmZmpiTVSe14nE6n8vPz3SYAAHBuqvcgtGnTJnXu3FmffPKJMjMz5e3trQceeED5+fmKjIx0rWexWGS1WpWXl1cnteOZNGmSgoKCXFNEREQtfwIAAKChqPcgNGzYMKWmpio6OlqRkZF66623tGjRIlVWVsput7ut6+vrq6KiItlstlqvHc+4cePkcDhcU3Z29hkeMQAAaKg8fvt8cHCwKisr1aJFC+Xm5rrVCgoK5OPjo9DQ0FqvHY/dbldgYKDbBAAAzk31HoQef/xxffbZZ675tWvXysvLS127dlVqaqpreVZWlpxOp0JDQxUdHV3rNQAAgHoPQt26ddPTTz+tH3/8UUuWLNEjjzyi+Ph4XXPNNXI4HEpJSZEkJSUlqW/fvrJarYqNja31GgAAgMXwwBMGx40bpxkzZiggIEA33nijEhMT1ahRI82bN09xcXEKCAhQRUWFli9frs6dO0tSndRqIj8/X0FBQXI4HFwmO0e1HfuNR9rN8o2r/0bHO+q/TQDwgJr+fnskCJ3I7t27lZaWpl69eiksLKzOaydDEDr3EYQA4NxT099vWz32qUbCw8MVHh5ebzUAAGBeHr9rDAAAwFMIQgAAwLQIQgAAwLQIQgAAwLQIQgAAwLROOQiVlpbqgQceOOE6r7zyinJyck67UwAAAPXhlG+f9/b21ocffqjs7GyFh4frwgsvVK9evdSjRw/ZbDYtXrxYL7zwgq699lq1atWqLvoMAABQK045CFksFjVp0kSPPvqo9u7dqx07duiZZ57Rli1bdNttt2n27Nn68MMP1aVLl7roLwAAQK2pcRD64IMPFB4ertjYWPn5+al///6uWlpamp544gnNmDFDvXr10pAhQ+qirwAAALWqxmOEfv75ZyUkJCgkJET79+/Xc889p7i4OEVGRurRRx/VnXfeqYMHDyo0NFRPPfVUXfYZAACgVtT4jNBbb70lScrIyFBKSopWr16tJUuW6Mknn9SLL77oWm/mzJmKiorS7bffrq5du9Z+jwEAAGpJjc8IjRkzRsOHD9fChQuVl5enlJQU3XXXXerQoYMGDx6sL774QkeOHNFVV12lp59+Wrt3767LfgMAAJyxGgehxMREXX311SosLJTValVcXJyuvfZaxcfHKzU1VbNnz1b79u118cUX6/7779eAAQPqst8AAABnrMaXxv7xj3/Ix8dHubm52rdvnzp27Kgvv/xSPXv2VEhIiL7++mvdcsstWrRokfbt26cWLVrUZb8BAADOWI3PCN1666269dZbddlll2nr1q3y8/PTzTffrD59+ujQoUNatWqVtm7dqpdfflmPPfZYHXYZAACgdtQ4CPXu3VuTJ09WQECAhgwZop07d8rPz0+//vqrJCkhIUGtWrXS0KFDtW3bNv3+++911mkAAIDaUONLYz/88IPGjh0ri8Wi3377TW+99Zb69Omj1NRU+fv7a+XKldq7d68kaejQoVq1apXOP//8Ous4AADAmbIYhmGcygZlZWUqLS3VgQMHVFRUpL/97W9avXq1evbs6VrnyJEjatSoUa131hPy8/MVFBQkh8OhwMBAT3cHdaDt2G880m6Wb1z9NzreUf9tAoAH1PT3+7TeNWaz2dS1a1cVFhZKklsIknTOhCAAAHBuO+W3z0tH3zfm5+dX230BAACoV6cVhKSjYQgAAOBsVuNLY0899ZR8fX1d80VFRXrhhReqXbe4uFiTJk06894BAADUoRoHIafTqT+PqzYMQ8XFxdWuW1paeuY9AwAAqGOnfNfYMc2aNdOBAwdquz8NDneNnfu4awwAzj01/f0+7TFCp5mfAAAAGozTCkKGYbhunZekgoICXX311crIyKi1jgEAANS1UwpCBw4c0BdffCGLxaLvvvvOtTwgIEB33HGH+vXrpw0bNtR2HwEAAOpEjQdL5+XlqW/fvurZs6f69eunxx57TN7e3rJarZKOniUqLS3VVVddpUWLFunvf/97nXUaAACgNtQ4CD322GPq16+fXn31VR06dEh5eXlKTk52W6e8vFybNm3iHWMAAOCsUONLY5MnT9arr74qSaqsrJTdbtfll1/uNl199dUaNWqUgoKCatyBAQMGuAJVRkaGoqOjFRISooSEBLcB2XVRAwAA5lbjIBQWFub6s7+/v5566qkzbvzjjz92jTVyOp0aPHiwunfvrrS0NGVmZroCUl3UAAAATuuusUaNGumuu+46o4b/+OMPjRkzRhdeeKEkaeHChXI4HJoyZYrat2+vxMREzZo1q85qAAAAp/z2+doyZswY3Xjjja6nU6enpysmJkb+/v6SpKioKGVmZtZZ7XicTqecTqdrPj8/v7YOGQAANDCn/UDFM7F06VL98MMPeumll1zL8vPzFRkZ6Zq3WCyyWq3Ky8urk9rxTJo0SUFBQa4pIiKitg4bAAA0MPUehEpKSvTAAw9o+vTpbo+8ttlsstvtbuv6+vqqqKioTmrHM27cODkcDteUnZ19uocKAAAauHoPQhMnTlR0dLQGDhzotjw0NFS5ubluywoKCuTj41MnteOx2+0KDAx0mwAAwLmp3scIzZkzR7m5uQoODpYkFRUV6bPPPlPbtm1VVlbmWi8rK0tOp1OhoaGKjo7We++9V6s1AACAej8jtGLFCmVkZGjDhg3asGGDrr/+er3wwgv68ccf5XA4lJKSIklKSkpS3759ZbVaFRsbW+s1AACAej8j1KpVK7f5xo0bq2nTpmratKlmzpypuLg4JSQkqKKiQsuXLz/aSZut1msAAAAWo4E9ann37t1KS0tTr1693B7iWFe1k8nPz1dQUJAcDgfjhc5Rbcd+45F2s3zj6r/R8Y76bxMAPKCmv98ee47Q8YSHhys8PLzeagAAwLw88hwhAACAhoAgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATIsgBAAATMujQejQoUNatWqVDh486MluAAAAk/JYEJo7d646dOig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KD4+XqmpqVXGCMXExLhdqnI6nbruuutks9m0a9cuffnll277HTFihAIDA6u0d/DgQU2YMEELFy7Ut99+q4SEBJWVlWnGjBkaOXKkunbtqvfff1+XX365JGnYsGEaMmSIunXrppkzZ+rKK6/U3r171b9/f91zzz36v//7PxUXF8swDBUVFXFpDGigCEIAGqThw4erX79+kqQXX3xRb7zxhuLi4k663d69e11/3rVrl6699lqtXLlSwcHBx91m/PjxevPNNxUfH68NGzaocePGCgoKUqNGjdSyZUt99dVXmjp1qm688UZlZmaqRYsW2rBhg+666y4NGDBAV155paSj44XWr1+v4uJiPf300zp48KAaN26s0NBQNWvW7Mw+EAB1gpeuAmiQ4uPj1bdvX23YsEFdunTR3XffrdTUVMXGxiooKMi1nsPh0Ndff60BAwbogQce0MqVK121vLw8HT58WJGRkVX2/89//lP333+/DMNQRkaGQkJC1KpVK1f9zjvvVEREhBITE13LDh06pMaNG8tut6u8vFyLFy/WNddcI6vVKuloCGvbtq3S0tLUtWtXSVJmZqbatm0rf3//Wv+MAJw5zggBOCtYLBZZLBb17t272tvnJWnfvn2aPHmyBgwYoK+++krjx4/X77//Ln9/f6WkpOjCCy/UpZdeqhdffFEHDhyQJOXk5Khv375VbrvfuXOn7Ha75syZ41pWVlamCy+8UEuWLJHNZtN5550nu90uf39/+fj4SDr6EMfY2FhZrVZVVlaqsLBQEydO1JNPPll3Hw6A00YQAtDgbd68WdOmTTvpnVjHbq+fP3++/vGPf+i5557T+++/rwMHDmjx4sXavn27NmzY4LZNRESE9u/f77YsJSVFr732mgoKCjR9+nTXJbq/6tatm8rLy92WtWrVSt9//706dux4ikcJwBMIQgAanKysLG3evFk///yzdu3apbCwMPXo0UP9+/c/7jaGYbju0mrVqpWGDBkiwzDUtGlT/f3vf9fIkSNdD0zMz88/7pihjz76SE899ZQWLFggHx8fXX/99brnnns0ZswYt0HZlZWVpzQAuqKiwnUJDUDDQRAC0OA4HA41a9ZMjz76qK666irXQOMff/xR69atU9OmTV3rGoahI0eO6OOPP1ZxcbEkqXv37vr888+r7Pfuu+9Wp06dlJeX57rkVVpaqtTUVK1atUofffSRGjdurEWLFqlTp06SpJUrV+r+++9Xq1atFBcXpxtvvFFXXHGFnn/+eb3yyitq3LixWxtOp1O9e/d2e/hjaWmpQkJCtHPnztr9oACcMQZLAzCVv57JKS0tVf/+/dWhQwfddttt6tu3b7Xb/fTTT5o+fboGDx6soUOH1ld3AdQxghAAADAtnvAFAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABMiyAEAABM6/8BlEQdj2S6XvsAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 130
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:20:22.171350Z",
     "start_time": "2024-09-18T12:20:22.119484Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 跟距离相关的独热编码\n",
    "def Get_dis_hot(df):\n",
    "    discols = ['Distance' + str(i) for i in range(-1,11)]\n",
    "    tmpdf = pd.get_dummies(df['Distance'].replace('null', np.nan))\n",
    "    tmpdf.columns = discols\n",
    "    df[discols] = tmpdf\n",
    "    return df\n",
    "new_data = Get_dis_hot(new_data)\n",
    "new_test_data = Get_dis_hot(new_test_data)\n",
    "# 集成新的数据集后，对缺失值处理\n",
    "new_data = new_data.fillna(-1)\n",
    "new_test_data = new_test_data.fillna(-1)\n",
    "new_data.isnull().sum()\n",
    "new_test_data.isnull().sum()"
   ],
   "id": "fdf73b6713fb8269",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "User_id                     0\n",
       "Merchant_id                 0\n",
       "Coupon_id                   0\n",
       "Discount_rate               0\n",
       "Distance                    0\n",
       "Date_received               0\n",
       "Dis_rate                    0\n",
       "Discount_type               0\n",
       "Discount_man                0\n",
       "Discount_jian               0\n",
       "Weekday                     0\n",
       "Is_weekend                  0\n",
       "weekday1                    0\n",
       "weekday2                    0\n",
       "weekday3                    0\n",
       "weekday4                    0\n",
       "weekday5                    0\n",
       "weekday6                    0\n",
       "weekday7                    0\n",
       "rec_coupon                  0\n",
       "Coupon_popu                 0\n",
       "Merchant_popu               0\n",
       "merchant_min_distance       0\n",
       "merchant_max_distance       0\n",
       "merchant_mean_distance      0\n",
       "merchant_median_distance    0\n",
       "Distance_type               0\n",
       "Distance-1                  0\n",
       "Distance0                   0\n",
       "Distance1                   0\n",
       "Distance2                   0\n",
       "Distance3                   0\n",
       "Distance4                   0\n",
       "Distance5                   0\n",
       "Distance6                   0\n",
       "Distance7                   0\n",
       "Distance8                   0\n",
       "Distance9                   0\n",
       "Distance10                  0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 131
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:20:34.485257Z",
     "start_time": "2024-09-18T12:20:34.480264Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 查看属性特征\n",
    "new_data.columns\n",
    "new_test_data.columns"
   ],
   "id": "2b6cba8e3f4f8645",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['User_id', 'Merchant_id', 'Coupon_id', 'Discount_rate', 'Distance',\n",
       "       'Date_received', 'Dis_rate', 'Discount_type', 'Discount_man',\n",
       "       'Discount_jian', 'Weekday', 'Is_weekend', 'weekday1', 'weekday2',\n",
       "       'weekday3', 'weekday4', 'weekday5', 'weekday6', 'weekday7',\n",
       "       'rec_coupon', 'Coupon_popu', 'Merchant_popu', 'merchant_min_distance',\n",
       "       'merchant_max_distance', 'merchant_mean_distance',\n",
       "       'merchant_median_distance', 'Distance_type', 'Distance-1', 'Distance0',\n",
       "       'Distance1', 'Distance2', 'Distance3', 'Distance4', 'Distance5',\n",
       "       'Distance6', 'Distance7', 'Distance8', 'Distance9', 'Distance10'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 132
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:20:50.638382Z",
     "start_time": "2024-09-18T12:20:50.634296Z"
    }
   },
   "cell_type": "code",
   "source": [
    "features = ['Dis_rate','Discount_type','Discount_man', 'Discount_jian',\n",
    "            'Distance','Distance_type','Distance-1', 'Distance0',\n",
    "            'Distance1', 'Distance2', 'Distance3', 'Distance4', 'Distance5',\n",
    "            'Distance6', 'Distance7', 'Distance8', 'Distance9', 'Distance10',\n",
    "            'rec_coupon','Coupon_popu','Merchant_popu','merchant_min_distance',\n",
    "            'merchant_max_distance','merchant_mean_distance','merchant_median_distance',\n",
    "            'Is_weekend','Weekday','weekday1','weekday2','weekday3','weekday4',\n",
    "            'weekday5','weekday6','weekday7']"
   ],
   "id": "1d243c673983f682",
   "outputs": [],
   "execution_count": 133
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:21:05.012651Z",
     "start_time": "2024-09-18T12:21:04.872547Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "# 提取指定特征属性的数据集，并且划分为训练集和验证集\n",
    "X = new_data[features]\n",
    "y = new_data['label']\n",
    "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,stratify=y)"
   ],
   "id": "96f8595c941bd63b",
   "outputs": [],
   "execution_count": 134
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:24:36.567879Z",
     "start_time": "2024-09-18T12:24:36.564384Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 进行网格搜索调参\n",
    "from sklearn.model_selection import GridSearchCV"
   ],
   "id": "d5e97b25e51b0483",
   "outputs": [],
   "execution_count": 135
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:30:07.939705Z",
     "start_time": "2024-09-18T12:27:35.408538Z"
    }
   },
   "cell_type": "code",
   "source": [
    "param_second_grid = {\n",
    "     'learning_rate':[0.1,0.11,0.12,0.13],\n",
    "     'max_depth': [4],\n",
    "     'n_estimators': [160]\n",
    "}\n",
    "\n",
    "grid_second_search = GridSearchCV(estimator = GradientBoostingClassifier(),param_grid = param_second_grid, scoring = 'neg_mean_absolute_error', cv = 3)\n",
    "\n",
    "grid_second_search.fit(X_train , y_train)\n",
    "grid_second_search.best_params_"
   ],
   "id": "aec94e874a7cf110",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'learning_rate': 0.13, 'max_depth': 4, 'n_estimators': 160}"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 137
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:31:10.153910Z",
     "start_time": "2024-09-18T12:30:49.314540Z"
    }
   },
   "cell_type": "code",
   "source": [
    "GBC_model = GradientBoostingClassifier(n_estimators=160,max_depth=4)\n",
    "GBC_model.fit(X,y)\n",
    "# 预测样本的各类标签（这里是0和1）的概率\n",
    "GBC_model.predict_proba(X_test)\n",
    "# 预测标签为1的概率\n",
    "y_predict = GBC_model.predict_proba(X_test)[:,1]\n",
    "# AUC值，验证集上的性能结果\n",
    "y_auc = roc_auc_score(y_test,y_predict)"
   ],
   "id": "28f1a549f6e873e1",
   "outputs": [],
   "execution_count": 138
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:31:40.363883Z",
     "start_time": "2024-09-18T12:31:39.036185Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn import metrics\n",
    "import matplotlib.pyplot as plt\n",
    "# fpr假正率，tpr召回率，thresholds阈值，pos_label（设置正样本值）默认为None（标签数据为二分类的情况）\n",
    "fpr, tpr, thresholds = metrics.roc_curve(y_test,y_predict, pos_label=1)\n",
    "roc_auc = metrics.auc(fpr, tpr)  # auc为Roc曲线下的面积\n",
    "plt.plot(fpr, tpr, 'r')  # 绘制ROC曲线\n",
    "axline = np.array([0.,0.2,0.4,0.6,0.8,1.0])  # 斜线参考线坐标\n",
    "plt.plot(axline,axline,'gray',linestyle='--',alpha=0.5)\n",
    "plt.grid(b=True,axis='both',alpha=0.3)  # 显示网格\n",
    "plt.xlim([-0.05, 1.05])  # 设置x轴刻度范围\n",
    "plt.ylim([-0.05, 1.05])  # 设置y轴刻度范围\n",
    "plt.xlabel('FPR')  # x轴是False Positive Rate\n",
    "plt.ylabel('TPR')  # y轴是True Positive Rate\n",
    "plt.title('AUC = %0.2f' % roc_auc)\n",
    "plt.show()"
   ],
   "id": "d570bef8f5194684",
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "keyword grid_b is not recognized; valid keywords are ['size', 'width', 'color', 'tickdir', 'pad', 'labelsize', 'labelcolor', 'labelfontfamily', 'zorder', 'gridOn', 'tick1On', 'tick2On', 'label1On', 'label2On', 'length', 'direction', 'left', 'bottom', 'right', 'top', 'labelleft', 'labelbottom', 'labelright', 'labeltop', 'labelrotation', 'grid_agg_filter', 'grid_alpha', 'grid_animated', 'grid_antialiased', 'grid_clip_box', 'grid_clip_on', 'grid_clip_path', 'grid_color', 'grid_dash_capstyle', 'grid_dash_joinstyle', 'grid_dashes', 'grid_data', 'grid_drawstyle', 'grid_figure', 'grid_fillstyle', 'grid_gapcolor', 'grid_gid', 'grid_in_layout', 'grid_label', 'grid_linestyle', 'grid_linewidth', 'grid_marker', 'grid_markeredgecolor', 'grid_markeredgewidth', 'grid_markerfacecolor', 'grid_markerfacecoloralt', 'grid_markersize', 'grid_markevery', 'grid_mouseover', 'grid_path_effects', 'grid_picker', 'grid_pickradius', 'grid_rasterized', 'grid_sketch_params', 'grid_snap', 'grid_solid_capstyle', 'grid_solid_joinstyle', 'grid_transform', 'grid_url', 'grid_visible', 'grid_xdata', 'grid_ydata', 'grid_zorder', 'grid_aa', 'grid_c', 'grid_ds', 'grid_ls', 'grid_lw', 'grid_mec', 'grid_mew', 'grid_mfc', 'grid_mfcalt', 'grid_ms']",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mValueError\u001B[0m                                Traceback (most recent call last)",
      "Cell \u001B[1;32mIn[139], line 9\u001B[0m\n\u001B[0;32m      7\u001B[0m axline \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39marray([\u001B[38;5;241m0.\u001B[39m,\u001B[38;5;241m0.2\u001B[39m,\u001B[38;5;241m0.4\u001B[39m,\u001B[38;5;241m0.6\u001B[39m,\u001B[38;5;241m0.8\u001B[39m,\u001B[38;5;241m1.0\u001B[39m])  \u001B[38;5;66;03m# 斜线参考线坐标\u001B[39;00m\n\u001B[0;32m      8\u001B[0m plt\u001B[38;5;241m.\u001B[39mplot(axline,axline,\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgray\u001B[39m\u001B[38;5;124m'\u001B[39m,linestyle\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m--\u001B[39m\u001B[38;5;124m'\u001B[39m,alpha\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0.5\u001B[39m)\n\u001B[1;32m----> 9\u001B[0m plt\u001B[38;5;241m.\u001B[39mgrid(b\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m,axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m,alpha\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0.3\u001B[39m)  \u001B[38;5;66;03m# 显示网格\u001B[39;00m\n\u001B[0;32m     10\u001B[0m plt\u001B[38;5;241m.\u001B[39mxlim([\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m0.05\u001B[39m, \u001B[38;5;241m1.05\u001B[39m])  \u001B[38;5;66;03m# 设置x轴刻度范围\u001B[39;00m\n\u001B[0;32m     11\u001B[0m plt\u001B[38;5;241m.\u001B[39mylim([\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m0.05\u001B[39m, \u001B[38;5;241m1.05\u001B[39m])  \u001B[38;5;66;03m# 设置y轴刻度范围\u001B[39;00m\n",
      "File \u001B[1;32mF:\\anaconda\\Lib\\site-packages\\matplotlib\\pyplot.py:3144\u001B[0m, in \u001B[0;36mgrid\u001B[1;34m(visible, which, axis, **kwargs)\u001B[0m\n\u001B[0;32m   3137\u001B[0m \u001B[38;5;129m@_copy_docstring_and_deprecators\u001B[39m(Axes\u001B[38;5;241m.\u001B[39mgrid)\n\u001B[0;32m   3138\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mgrid\u001B[39m(\n\u001B[0;32m   3139\u001B[0m     visible: \u001B[38;5;28mbool\u001B[39m \u001B[38;5;241m|\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m   3142\u001B[0m     \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs,\n\u001B[0;32m   3143\u001B[0m ) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m-> 3144\u001B[0m     gca()\u001B[38;5;241m.\u001B[39mgrid(visible\u001B[38;5;241m=\u001B[39mvisible, which\u001B[38;5;241m=\u001B[39mwhich, axis\u001B[38;5;241m=\u001B[39maxis, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n",
      "File \u001B[1;32mF:\\anaconda\\Lib\\site-packages\\matplotlib\\axes\\_base.py:3196\u001B[0m, in \u001B[0;36m_AxesBase.grid\u001B[1;34m(self, visible, which, axis, **kwargs)\u001B[0m\n\u001B[0;32m   3194\u001B[0m _api\u001B[38;5;241m.\u001B[39mcheck_in_list([\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mx\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124my\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m], axis\u001B[38;5;241m=\u001B[39maxis)\n\u001B[0;32m   3195\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m axis \u001B[38;5;129;01min\u001B[39;00m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mx\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m]:\n\u001B[1;32m-> 3196\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mxaxis\u001B[38;5;241m.\u001B[39mgrid(visible, which\u001B[38;5;241m=\u001B[39mwhich, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[0;32m   3197\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m axis \u001B[38;5;129;01min\u001B[39;00m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124my\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m]:\n\u001B[0;32m   3198\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39myaxis\u001B[38;5;241m.\u001B[39mgrid(visible, which\u001B[38;5;241m=\u001B[39mwhich, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n",
      "File \u001B[1;32mF:\\anaconda\\Lib\\site-packages\\matplotlib\\axis.py:1697\u001B[0m, in \u001B[0;36mAxis.grid\u001B[1;34m(self, visible, which, **kwargs)\u001B[0m\n\u001B[0;32m   1694\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m which \u001B[38;5;129;01min\u001B[39;00m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m]:\n\u001B[0;32m   1695\u001B[0m     gridkw[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgridOn\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m (\u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_major_tick_kw[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mgridOn\u001B[39m\u001B[38;5;124m'\u001B[39m]\n\u001B[0;32m   1696\u001B[0m                         \u001B[38;5;28;01mif\u001B[39;00m visible \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;28;01melse\u001B[39;00m visible)\n\u001B[1;32m-> 1697\u001B[0m     \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mset_tick_params(which\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mgridkw)\n\u001B[0;32m   1698\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstale \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n",
      "File \u001B[1;32mF:\\anaconda\\Lib\\site-packages\\matplotlib\\axis.py:958\u001B[0m, in \u001B[0;36mAxis.set_tick_params\u001B[1;34m(self, which, reset, **kwargs)\u001B[0m\n\u001B[0;32m    945\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m    946\u001B[0m \u001B[38;5;124;03mSet appearance parameters for ticks, ticklabels, and gridlines.\u001B[39;00m\n\u001B[0;32m    947\u001B[0m \n\u001B[1;32m   (...)\u001B[0m\n\u001B[0;32m    955\u001B[0m \u001B[38;5;124;03m    gridlines.\u001B[39;00m\n\u001B[0;32m    956\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m    957\u001B[0m _api\u001B[38;5;241m.\u001B[39mcheck_in_list([\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmajor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mminor\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mboth\u001B[39m\u001B[38;5;124m'\u001B[39m], which\u001B[38;5;241m=\u001B[39mwhich)\n\u001B[1;32m--> 958\u001B[0m kwtrans \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_translate_tick_params(kwargs)\n\u001B[0;32m    960\u001B[0m \u001B[38;5;66;03m# the kwargs are stored in self._major/minor_tick_kw so that any\u001B[39;00m\n\u001B[0;32m    961\u001B[0m \u001B[38;5;66;03m# future new ticks will automatically get them\u001B[39;00m\n\u001B[0;32m    962\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m reset:\n",
      "File \u001B[1;32mF:\\anaconda\\Lib\\site-packages\\matplotlib\\axis.py:1102\u001B[0m, in \u001B[0;36mAxis._translate_tick_params\u001B[1;34m(kw, reverse)\u001B[0m\n\u001B[0;32m   1100\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m key \u001B[38;5;129;01min\u001B[39;00m kw_:\n\u001B[0;32m   1101\u001B[0m     \u001B[38;5;28;01mif\u001B[39;00m key \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m allowed_keys:\n\u001B[1;32m-> 1102\u001B[0m         \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m   1103\u001B[0m             \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mkeyword \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m is not recognized; valid keywords are \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m   1104\u001B[0m             \u001B[38;5;241m%\u001B[39m (key, allowed_keys))\n\u001B[0;32m   1105\u001B[0m kwtrans\u001B[38;5;241m.\u001B[39mupdate(kw_)\n\u001B[0;32m   1106\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m kwtrans\n",
      "\u001B[1;31mValueError\u001B[0m: keyword grid_b is not recognized; valid keywords are ['size', 'width', 'color', 'tickdir', 'pad', 'labelsize', 'labelcolor', 'labelfontfamily', 'zorder', 'gridOn', 'tick1On', 'tick2On', 'label1On', 'label2On', 'length', 'direction', 'left', 'bottom', 'right', 'top', 'labelleft', 'labelbottom', 'labelright', 'labeltop', 'labelrotation', 'grid_agg_filter', 'grid_alpha', 'grid_animated', 'grid_antialiased', 'grid_clip_box', 'grid_clip_on', 'grid_clip_path', 'grid_color', 'grid_dash_capstyle', 'grid_dash_joinstyle', 'grid_dashes', 'grid_data', 'grid_drawstyle', 'grid_figure', 'grid_fillstyle', 'grid_gapcolor', 'grid_gid', 'grid_in_layout', 'grid_label', 'grid_linestyle', 'grid_linewidth', 'grid_marker', 'grid_markeredgecolor', 'grid_markeredgewidth', 'grid_markerfacecolor', 'grid_markerfacecoloralt', 'grid_markersize', 'grid_markevery', 'grid_mouseover', 'grid_path_effects', 'grid_picker', 'grid_pickradius', 'grid_rasterized', 'grid_sketch_params', 'grid_snap', 'grid_solid_capstyle', 'grid_solid_joinstyle', 'grid_transform', 'grid_url', 'grid_visible', 'grid_xdata', 'grid_ydata', 'grid_zorder', 'grid_aa', 'grid_c', 'grid_ds', 'grid_ls', 'grid_lw', 'grid_mec', 'grid_mew', 'grid_mfc', 'grid_mfcalt', 'grid_ms']"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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77//Pl544QW8//77OHz4MGw2G7773e8GpuAQNjg4iBtvvNHnECLls1CEod/97nciKSlJTExMCCGEOHLkiLjiiivmvOfpp58WpaWlwuPxCCGEeOutt8SXvvQlv9cayhbynH/961+LN954w3v93HPPiZKSEr/WGQ4W8qynNTY2isTERJGXlyf27dvnxypD30Kf8+TkpCgoKBA7d+70d4lhYSHP+YknnhAbNmzwXr/44ovi8ssv92ud4eCaa64R27dvFwBEa2vreb9exmdhWLaIHD16FGvWrEFMTAwAoLKyEmaz+bz3fOYzn/FurLd69WocPnzY77WGsoU857vvvhu33HKL97qhoQFFRUV+rTMcLORZT7vnnnvwyCOPYNmyZf4sMSws9Dk/9thjmJqaglarxd69e+fVnROJFvKcly9fjjfffBMtLS3o7+/Hzp07ce211wai3JC2Y8cO/Ou//qvPXy/jszAsg4jVakV+fr73WqVSQaPRYGRkxOd7EhIS0N3d7dc6Q91CnvOphoaG8Oyzz+K+++7zV4lhY6HP+vnnn4fFYmETto8W8pw7Ojqwbds2FBUVoaOjAxs2bMAtt9zCMDKHhTzn66+/HsXFxSgqKkJ6ejomJibwyCOPBKLckFZQUDCvr5fxWRiWQUSr1Z6xXG10dDQmJyd9vud8X08Le86nuu+++7B27VrccMMN/igvrCzkWQ8MDGDjxo3YuXMntNqg32g7KCzkOe/atQvp6el499138YMf/ADvvfce9u/fj3fffdff5YashTzn1157De3t7aivr8fQ0BCWL1+Ou+66y9+lRhwZn4Vh+dMpOTn5jIF5Y2NjiIqKmvOegYEBn7+eFvacpz333HN4//33ceTIET9VF14W8qwffPBB3H333VixYoWfqwsfC3nOXV1duOaaa7w/vOPj41FcXIzW1la/1hrKFvKcX3nlFdx7770oLS0FAGzfvh1GoxGjo6NITEz0Z7kRRcZnYVi2iKxatQoHDx70Xre1tcFutyM5Odnne44cOYKsrCy/1hnqFvKcAeDDDz/Egw8+iFdffRXp6en+LjMsLORZv/zyy/jpT3+KxMREJCYm4sCBA7jxxhuxdevWQJQckhbynHNycjA1NeW99ng86Orq4picOSzkObtcLvT19Xmvp6f9u91u/xUagaR8Fvp1KKwkTqdTpKWliRdeeEEIIcQ999wjbrzxRiGEEBaLRTgcjjPuGRgYENHR0WLv3r3C6XSKG264QXzzm98MaN2hZiHPube3VyxZskQ8/vjjYmxszPuiuS3kWbe2ts56XXbZZeKVV14RIyMjgSw9pCzkOdfX14vY2Fjx+uuvi87OTvG9731PpKSkCKvVGtDaQ8lCnvOWLVtEWlqaeOaZZ8SuXbvEihUrOGtmHnDarJlg+iwMyyAihDI9zGAwiCVLloiUlBRRU1MjhBBi2bJl4ne/+91Z7/n5z38udDqdSE1NFcuWLRO9vb0BrDg0zfc5P/300wLAGS86v4X8N32qq6++mtN3fbCQ5/xf//VfYsWKFSI6OlpUVFSIAwcOBLDi0DTf5zw1NSUeeOABsXTpUhEVFSWuvvpq0dzcHOCqQ9fpQSSYPgtVJwsMS93d3aiursbatWuRlpbm0z3Nzc2oq6vD1VdfjYSEBD9XGB4W8pxpYfisA4PPOTD4nINXID8LwzqIEBERUXALy8GqREREFBoYRIiIiEgaBhEiIiKShkGEiIiIpGEQISIiImkYRIiIiEgaBhEiIiKShkGEiIiIpGEQISIiImn+P4W204ljSD38AAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 139
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-09-18T12:31:44.548939Z",
     "start_time": "2024-09-18T12:31:43.998465Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 预测给定的测试集\n",
    "pre_test = new_test_data[features]\n",
    "result = GBC_model.predict_proba(pre_test)[:,1]\n",
    "test_result = new_test_data[['User_id','Coupon_id','Date_received']]\n",
    "test_result['Probability'] = result\n",
    "# 查看描述性结果\n",
    "test_result['Probability'].describe()\n",
    "test_result.to_csv('./new_sample_submission.csv',index=None,header=None)"
   ],
   "id": "a8a4cac800adc145",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Li\\AppData\\Local\\Temp\\ipykernel_18076\\597413827.py:5: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  test_result['Probability'] = result\n"
     ]
    }
   ],
   "execution_count": 140
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "1d6215b0178d9877"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
